1. 程式人生 > >簡單的json陣列格式前臺傳送,後臺解析

簡單的json陣列格式前臺傳送,後臺解析

       一直對json陣列格式的資料傳遞認知有點模糊,剛好工作需要用到了這方面的內容,所以花了點時間過來整理下,記錄的過程也能更好地理順一些東西。因為整理使用的過程中出了點小問題,所以就上網瀏覽了一些文章,下面是我個人認為還不錯值得參考的幾篇。

前臺程式碼:

		<!--修改事件開始-->
		function updateSentiment(){		
			var sentiment = $("#updateSentiment").val();//批量修改
			if(sentiment != -1){
				var datalist = [];
				var arr=$('input[id=titleid]:checked');
				if(arr.length <=0){
					$("#updateSentiment").val(-1);
					alert("請選擇需要修改的資料");
					return false;
				}
	    		$(arr).each(function(){
	    			var updateId = new Object();
	    			var t = $(this).siblings("span.mr-10").text();//資訊當前值
	    			if(t == '積極'){
	    				updateId.oldSentiment = '2';
	    			}else if(t =='消極'){
	    				updateId.oldSentiment = '0';
	    			}else{
	    				updateId.oldSentiment = '1';
	    			}
	    			updateId.sentiment = sentiment;
	    			updateId.id = $(this).val();//勾選資訊的ID
	    			datalist.push(updateId);
				});
	    		$.ajax({
				url:path+"/motor/editField.php",
				data:{'datalist':JSON.stringify(datalist),'type':'0'},//型別是為了區分操作
				type : 'post',
				async : false,
				dataType : "text",
				success:function(data){
					console.log(data)
					$("#updateSentiment").val(-1);
					$(arrChk).each(function(){
						 $(this).attr("checked",false);
					});
					if(data == "success"){
						alert("修改已生效!");
						queryJsonList(1);
					}else{
						alert("系統錯誤,請稍後再試");
					}
				}
	    		});
			}			
		}

ps: JSON.stringfy();是將json轉換成字串的方法,

json字串發往後臺,接收到的形式為:

[{"oldSentiment":"1","sentiment":"2","id":"5b0e4db0d4c638d232ec6cae"},{"oldSentiment":"1","sentiment":"2","id":"5b0e4db0d4c638d232ec6caa"}]

後臺接收:

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

import java.util.Iterator;

    /**
     * 修改欄位
     * @param request
     * @return
     */
    @RequestMapping(value="/editField.php",method={RequestMethod.GET,RequestMethod.POST})
    @ResponseBody
    public String editField(HttpServletRequest request){
        String list = request.getParameter("datalist");
        String type = request.getParameter("type");
        JSONArray jArray = JSON.parseArray(list);  //將傳過來的json字串放入json集合(com.alibaba.fastjson.JSONArray)
        Iterator it = jArray.iterator();
        System.out.println(type+" @@@@@@@@"+list);
        IData params = new DataMap();
        int ret = 1;
        if("0".equals(type)){
            while(it.hasNext()){
                JSONObject obj = (JSONObject)it.next();
                String id = (String)obj.get("id");    //資訊id
                String oldSentiment = (String)obj.get("oldSentiment"); //資訊當前情感
                String sentiment = (String)obj.get("sentiment");     //修改後的情感
                if(sentiment.equals(oldSentiment)){
                    continue;
                }
                params.put("id", id);
                params.put("fieldName", "simNum");
                params.put("simNum", Integer.parseInt(sentiment));
                ret = monitorService.editEmo(params);
            }
        }
        if(ret==0){
            return "success";
        }
        return "error";
    }

我這裡使用的是阿里的com.alibaba.fastjson.JSONObject;所以要相當注意,json相關依賴的包別引入錯了,如果交叉引入而由於兩者間不能相互轉換,會出現如下錯誤:

java.lang.ClassCastException: net.sf.json.JSONObject cannot be cast to com.alibaba.fastjson.JSONObject

如果使用 net.sf.json 則需要修改相應的轉換方法:

JSONArray jsArray=JSONArray.fromObject(list); //將傳過來的json字串放入json集合(net.sf.json.JSONObject)
String id = (String)jArray.getJSONObject(0).get("id");

網上可能也還有其他方法,比如說引入 org.json的,寫法如下:

JSONArray jsArray = new JSONArray(list);

但是由於限制我這邊引入不了相關包,所以沒有嘗試第三種;第一種和第二種是可用的,需要的同學可以去測一下。如果有問題的話可以評論出來共同討論共同進步。

上面的參考文章同學們不如去看一下,反正不要錢~~~~~~~


相關推薦

簡單json陣列格式前臺傳送後臺解析

       一直對json陣列格式的資料傳遞認知有點模糊,剛好工作需要用到了這方面的內容,所以花了點時間過來整理下,記錄的過程也能更好地理順一些東西。因為整理使用的過程中出了點小問題,所以就上網瀏覽了一些文章,下面是我個人認為還不錯值得參考的幾篇。前臺程式碼: <!

前臺日期格式轉成與數據庫日期格式相對應後臺java轉數據庫日期格式

num fda win to_date datetime get resultset window 後臺 前臺到後臺java時data日期類型的轉化 在實體類中用@DataTimeFormat,這樣設置即使傳過來是空的字符串也是可以轉的,要和前面傳過來的格式一致,如

前臺日期格式轉成與資料庫日期格式相對應後臺java轉資料庫日期格式

前臺到後臺java時data日期型別的轉化 在實體類中用@DataTimeFormat,這樣設定即使傳過來是空的字串也是可以轉的,要和前面傳過來的格式一致,如 @XmlElement(name="BeginDate") @DateTimeFormat(pattern="yyyy-MM-dd")

關於java 傳送http json資料格式請求時伺服器端如何接收json資料並解析

一般情況下,傳送http請求時content-tye是application/x-www-form-urlencoded格式,而這樣的格式會以鍵值對的形似被封裝,至於是在瀏覽器傳送的時候被封裝的還是在伺服器端被封裝的我還不太清楚。但是我的猜測是在瀏覽器傳送請求的時候在客戶端

Android通過JSON資料格式和java服務後臺進行資料互動

Android和JAVA後臺實現資料通訊 前言 進行綜合設計的時候,要求做個javaweb專案並掛到伺服器上,與此同時在Android上通過訪問後臺介面實現部分功能。經過了一番的摸索和踩坑,終於實現了和後臺服務的通訊登陸註冊和資訊列表顯示功能。這是 github

java後臺呼叫API後臺解析json

在京的大部分公司都是前後端分離,我是後臺java開發人員,一般都是我們寫好api,給前臺,呼叫是他們的事兒,因為要接入第三方的api,這裡做一下筆記 首先要先拿到第三方api的介面文件,一般大部分都是http請求,先根據appKey和appSecret請求回token,再去

JSON統一格式返回值統一異常處理

一,如果編寫介面給他人呼叫,只有一段返回資料,沒有其他資訊說明這是非常不好的。 那問題來了,怎麼不好呢?1,如果知識返回一段呼叫後的資料那還好,要是呼叫失敗呢?如果沒有返回碼,沒有資訊提示,就讓呼叫者去猜測嗎,而不能做其他的處理。 所以為了更加規範的處理返回格式的問題,我把

js如何處理兩個json陣列去除重複資料然後合併陣列

如:var a = [{"id":"1001","name":"張三","age":"18","address":"北京市朝陽區","school":"朝陽區第二中學"},{"id":"1002","name":"李四","age":"15","address":"北京市海淀

移動端將base64傳給後臺後臺解析出的圖片一部分是白色的

1、base64在手機端如果儲存到input的value裡面   input會截斷太大的部分 導致後臺收到的base64無法正確解析或者一部分是白色的   可以放到全域性變數或者imgsrc屬性裡  2、部

Android之Gson時間格式不一致導致後臺解析錯誤問題

採用Gson封裝Json資料與後臺進行互動,Android端與後臺介面通常對資料中的Date格式需要做統一處理,這樣就能保證Gson正常解析。但在不同的jdk版本的環境中,這樣處理也不能百分百保證沒有

ASP.NET MVC前臺js傳送陣列後臺陣列接收

var idsArr=[]; idsArr.push(123); idsArr.push(556); idsArr.push(890); //前臺ajax寫法  $.ajax({url: "/Coa

使用thymeleaf框架前臺日期格式是字符串後臺不能以Date格式接收解決

tom style org property 方法 父類 sim imp java import org.springframework.beans.propertyeditors.CustomDateEditor;import org.springframework.we

JAVA後臺接受前臺傳遞陣列的處理方法

當成json陣列,JSONObject,直接進行處理。 例如前臺json陣列型別為: String str="{'index':'XXX','is_update':'N','username':'王','id_card':'XXXXXXXX','phone':'2333333'}";

前臺ajax傳陣列後臺java接收

前臺ajax傳陣列  var arr = new Array(); ,後臺java接收 List<String> arr java程式碼: //新增 @RequestMapping(value = "checkChoise") @ResponseBod

spring MVC框架下前臺往java後臺傳送json資料

前臺頁面 <form action="" method="post" id="loginForm"> <table> <tr> <td&

Android如何用json格式傳資料到後臺(SSM) 做一個簡單的登入流程

哈嘍!剛剛開始接觸Android, 有很多地方都不同懂,甚至有點想放棄,曾幾何時,我會感嘆 安卓“從介面到放棄”,但做什麼事都要堅持下來,這個登入做了一週了,下面開始進入主題。這篇部落格是寫Android 客戶端登入,怎樣傳資料到服務端(用的是SSM框架)。然後又從服務端查詢

前臺angular迴圈後臺傳送來的json資料

<?php namespace app\index\controller; use think\Controller; use think\Request; use think\Db; use think\db\Query; class Index extends Control

前臺JS獲取後臺Json資料 動態建立table並填充資料

原文:http://wkf41068.iteye.com/blog/1188302 mark一下,這個月要用的東西。主要是資料格式要好好看一下,之前發資料的時候就出現過資料型別不匹配導致post失敗 <!-- 測試點選“檢視流程記錄 ”時激發的JS -->

SSM前端表單向後臺傳送陣列後臺的接收資料的方式

在springMVC中,controller中方法的引數是自動注入的,在使用註解的方式下,通常有:                  @RequestParam:  ·取querystring當中的引數

jQuery在前臺接收後臺json陣列並處理

首先,科普一下:為什麼要用json? 使用上的因素:JSON的結構更容易對映至一般語言的資料結構。 JSON的主要組成成分: JSON是object、array、string