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对象的形式接收,但是不能进行循环取值

猜你喜欢

转载自blog.csdn.net/Bambi12/article/details/83000884