--歡迎多多評論多多交流,指正缺點
在這之前必要提到這些JSON的轉換都是依賴於引入 ,
首先你得懂得用 ajax 傳值到一般處理程序, 以及基本得json字符串結構
Newtonsoft.Json.dll 動態鏈接庫文件,
需要的同學可以點擊鏈接去我的百度雲下載 ,下面給出地址
鏈接:https://pan.baidu.com/s/1yINv3y6r-MsV1C6hcyxMtQ 提取碼:2lv6
用的時候就首先引入命名空間就可以調用里面的方法拉
然后我們來介紹介紹里面的主要方法
1) JsonConvert.SerializeObject() 將指定的對象序列化為JSON字符串。 (后台打包回來)
2) JsonConvert.DeserializeObject() 將JSON字符串反序列化為指定的.NET類型 (后台解析,JSON字符串為某種集合類型)
3) JSON.parse() 將JSON字符串轉為一個對象。 (前台轉換)
4) JSON.stringify() 將 JavaScript 值轉換為 JSON 字符串, (前台轉換)
里面有很多轉換方法,但這里主要轉換是字符串,數組,鍵值對 的方法, 其他方法不過多累贅
JSON傳遞到后台的數據是多種多樣的,但基本思想大致是一樣的,(我想其他的傳遞思想應該是大同小異的)
1.不同的傳值方式前台序列化成JSON字符串傳遞到后台
2.后台用合適的集合或者封裝類的方法進行解析淺談傳遞過來的JSON字符串,然后在后台程序中處理,處理完成序列化成JSON字符串打包回來
3.前台接送到后台傳遞回來的JSON字符串,轉換為JSON 對象進行合理的拆分,取值(原來什么類型傳就用什么方式取)
(方法1——傳遞單個字符串) 當傳遞單個值得情況下
var self="asd";
JSON.stringify("asd") 后台接收: "asd"
如果說單純得傳遞一個字符串到后台得時候往往是非常容易的, 這里就不過多累贅
比較簡單得就可實現 數據庫語句得字符串拼接了,
這個時候而言,我們無非就是對返回回來的字符串進行判讀處理,值得一提的是如果我們返回一個Bool 值類型 ,在經過toString()方法之后, 首字母是會轉換成大寫的
因此判斷的時候如果出錯要稍微注意一下了
(方法2,3 傳遞多值得時候)通過一個例子來理解把
這個例子是基於點擊按鈕之后,通過后台為文本添加上已經處理
點擊之后效果如下
(方法2——傳遞鍵值對的形式)
獲取相應文本框的數據作為值,
我們在文本框依次輸入 測試數據1,測試數據2,測試數據3,測試數據4
如果我們前台alert直接彈出這個return的值
alert(JSON.stringify([object Object]) )彈窗處理這個對象之后可以得到這樣一個JSON 字符串:
那么后台(一般處理程序或者類文件中)如何取出這樣的鍵值對形式呢,可以直接通過字典集合的形式進行解析處理 一般來所鍵值對的形式我們用字典集合處理比較好
Dictionary<string, string> WeekDictionary = JsonConvert.DeserializeObject<Dictionary<string, string>>(pars); //將我們的鍵值對對象轉換為字典集合
for (int i = 0; i < WeekDictionary.Count; i++)
{
string ValueIndex = "value" + (i + 1).ToString(); WeekDictionary[ValueIndex] = "已處理" + WeekDictionary[ValueIndex]; } return JsonConvert.SerializeObject(WeekDictionary); //將指定的對象序列化為JSON字符串。
這樣我們就可以在前台用統一的格式來處理這個JSON字符串了
對於這個 re 數據 我們可以對它進行處理,之后就可以在前台通過類似數組的索引的方式取出某一個值了
msg = (typeof (data) == "object" ? msg : JSON.parse(data)); //將這個json字符串轉換成json對象 //將返回回來的數據轉換成為一個數組 self.elems.$tmpl_input.val(msg["value1"]); self.elems.$tmpl_input1.val(msg["value2"]); self.elems.$tmpl_input2.val(msg["value3"]); self.elems.$tmpl_input3.val(msg["value4"]);
msg = (typeof (re) == "object" ? msg : JSON.parse(re)); --這句的意思是,判斷是不是一個JSON對象,如果不是將JSON字符串轉為一個對象。
(方法3——傳數組的形式)
如果我們前台 alert($p);
alert(JSON.stringify($p)); 處理這個對象之后可以得到這樣一個JSON 字符串:
后台轉換之后得到的數據
最后經過 JsonConvert.SerializeObject(list); //將指定的list集合序列化為JSON字符串。 (拿數據)
在這之后前台可以拿到數據
對於這個 re 數據 我們可以對它進行處理,之后就可以在前台通過類似數組的索引的方式取出某一個值了 (讀取數據)
msg = (typeof (data) == "object" ? msg : JSON.parse(data)); //將這個json字符串轉換成json對象
self.elems.$tmpl_input.val(msg[0]);
self.elems.$tmpl_input1.val(msg[1]); self.elems.$tmpl_input2.val(msg[2]); self.elems.$tmpl_input3.val(msg[3]);
msg = (typeof (re) == "object" ? msg : JSON.parse(re));
--這句的意思是,判斷是不是一個JSON對象,如果不是將JSON字符串轉為一個對象。
----不能只思考而不去做,也不能只去做而不思考,同樣在生活中也要成為一個細心的人