JSON(全称为JavaScript Object Notation)是一种轻量级的数据交换格式。它是基于JavaScript语法标准的一个子集。JSON采用完全独立于语言的文本格式,可以很容易在各种网络、平台和程序之间传输。JSON的语法很简单,易于人阅读和编写,同时也易于机器解析和生成。
一:JSON VS XML
1.JSON和XML的数据可读性基本相同
2.JSON和XML同样拥有丰富的解析手段
3.JSON相对于XML来讲,数据的体积小
4.JSON与JavaScript的交互更加方便
5.JSON对数据的描述性比XML较差
6.JSON的速度要远远快于XML
二:GWT与JSON
GWT中支持的客户端服务器端方法调用和数据传递的标准格式是RPC,JSON并不是GWT支持的标准的数据传递格式。那么如何使用JSON来作为GWT的数据传递格式呢?需要以下几步。
1.引用HTTP和JSON支持。
2.在客户端创建JSON数据,提交到服务器
3.在服务器上重写数据格式解析的代码,使之支持JSON格式的数据
4.在服务器上组织JSON格式的数据,返回给客户端
5.客户端解析服务器传回的JSON数据,正确的显示.
三:JSON 语法规则
JSON 语法是JavaScript对象表示法语法的子集
1.数据在名称/值对中
2.数据由逗号分隔
3.花括号保存对象
4.方括号保存数组
5.JSON 名称/值对
四:JSON 数据的书写格式是:名称/值对
名称/值对包括字段名称(在双引号中),后面写一个冒号,然后是值:"firstName" : "John"
1.JSON值可以是:数字(整数或浮点数),字符串(在双引号中),逻辑值(true 或false),数组(在方括号中),对象(在花括号中),null。
2.如果JSON中含有转义字符,则需要转义。例如文件路径中需要使用"\"而不是""。例如:{"file":"C:\\a.txt"}。
五:JSON类
1.JSONObject:可以看作是一个json对象。
JSONStringer:json文本构建类。
JSONArray:它代表一组有序的数值。
JSONTokener:json解析类
JSONException:json中用到的异常
JSONObject, JSONArray来构建json文本
2.getType和optTypeapi的使用
getType可以将要获取的键的值转换为指定的类型,如果无法转换或没有值则抛出JSONException
optType也是将要获取的键的值转换为指定的类型,无法转换或没有值时返回用户提供或这默认提供的值
3.object和endObject必须配对使用
4.json文本解析类JSONTokener
按照RFC4627规范将json文本解析为相应的对象。
对于将json文本解析为对象,只需要用到该类的两个api,api基本就是用来查看json文本中的文本的
c# 解析JSON
protected voidPage_Load(object sender, EventArgs e)
{
varjdata="[{"id":0,"email":"abccd","age":0},{"id":1,"email":"abc1","age":2}]";
//stringjsonData = context.Request.Form["jdata"]; //取得这个json字符串
stringjsonData = jdata; //取得这个json字符串
stringdatastr = "";
//调用上面这个方法,把json字符串传进去,就得到一个对象集合了
List DataReust =JSONToObject>(jsonData);
for (int i = 0; i < DataReust.Count;i++)
{
int id =DataReust[i].id;
stringemail = DataReust[i].email;
int age =DataReust[i].age;
datastr +="id:" + id + " email:" + email + " age:" + age+"";
}
}
//做一个类id,email,age和json格式一致
public class Person
{
public intid { set; get; }
publicstring email { set; get; }
public intage { set; get; }
}
//这个一个反序列化的方法,用于返回泛型集合
public static TJSONToObject(string jsonText)
{
JavaScriptSerializer jss = new JavaScriptSerializer();
returnjss.Deserialize(jsonText);
}
c# 解析JSON的几种办法
对比
主要类 | 命名空间 | 限制 | 内建LINQ支持 | DataContractJsonSerializerSystem.Runtime.Serialization.Json通用否JavaScriptSerializerSystem.Web.Script.Serialization只能在Web环境使用否JsonArray、JsonObject、JsonValueSystem.Json只能在Silverlight中使用是JsonConvert、JArray、JObject、JValue、JPropertyNewtonsoft.Json通用是