1. 程式人生 > >Json字串和物件之間的區別和轉化

Json字串和物件之間的區別和轉化

一、什麼是Json?
Json是一種輕量級的資料交換格式。
{} 花括號表示物件,[] 中括號表示陣列,”” 雙引號內是屬性或值,: 冒號表示後者是前者的值(這個值可以是字串、數字、也可以是另一個數組或物件)。
二、什麼是Json物件?什麼是Json字串?
(i)Json物件:是直接可以使用的Jquery操作格式,和C#中可以用物件(類名)點出屬性一樣。
(ii)Json字串:僅僅是一個字串,是一個整體,不擷取的話沒辦法取出其中儲存的資料,不能直接使用。

var data= { "ID": ID, "Name": "Vala" }; //Json物件
var datastr= '{ "ID": ID, "Name": "Vala" }'; //Json字串

另外:
var dataarray= [{ "ID": '1', "Name": "Vala" },{ "ID": '2', "Name": "Anne" }]; //Json陣列
var datac= { "ID": ID, "Name": "Vala" ,"hobby":{"color":"red","fruit":"apple"}}; //複雜的Json物件
三、將Json字串轉換為Json物件
1、使用$.parseJson()

var datastr= '{ "ID": ID, "Name": "Vala" }';
var dataobj=$.parseJson(datastr);   //轉為Json物件
//注:這種方法只適用於標準格式:var str='{ "name": "John" }';

2、使用JSON.parse(str)

var datastr= '{ "ID": ID, "Name": "Vala" }';
var dataobj=JSON.parse(datastr);   //轉為Json物件
//注:這種方法只適用於標準格式:var str='{ "name": "John" }';

3、使用eval(’(’+datastr+’)’)

var str='{ "name": "John" }';
var obj = eval('(' + str + ')'); 
alert( obj.name);

標準格式和非標準格式

var str="{ 'name': 'John' }";
var str2='{ "name": "John" ,"sex":"man"}';  //標準格式
var str3="{ name: 'John' }";

四、將Json物件轉換為Json字串
使用JSON.stringify()方法

var data= { "ID": ID, "Name": "Vala" }; //Json物件
var datastr=Json.stringify(data);   //轉換為Json字串

五、使用Json前後臺傳值
1、前端傳值後端
(i)如果data格式為json物件格式,後臺接收的引數形式為:(引數型別 引數名稱)
(ii)如果data格式為json字串格式,後臺接收的引數形式為將值直接注入到物件中,一般都是用post方法傳遞引數的。
2、後端返回前端資料(不知道理解正不正確,有待實驗確認)
(1)如果後端直接返回的是一個物件,那麼前端dataType : "json",接收,則為json物件格式。
(2)如果後端返回的是JsonConvert.SerializeObject(model);的string形式,則前端可以按json物件的形式接收,但是不能進行迴圈取值