欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JSON入门教程:Json是什么?为什么使用Json?

程序员文章站 2023-11-11 13:26:40
json入门教程:json是什么?为什么使用json? json是什么? json(javascript object notation)是指javascript 对象表示法,可...

json入门教程:json是什么?为什么使用json?

json是什么? json(javascript object notation)是指javascript 对象表示法,可以用来表示string、number、boolean、数组甚至对象等数据。 json类似xml,是存储和交换文本信息的语法。 json是轻量级的文本数据交换格式。 json使用javascript语法来描述数据对象,独立于语言和平台,适合于服务器与javascript客户端的交互。

为什么使用json?

对于 ajax 应用程序来说,json 比 xml 更快更易使用;
- 使用xml
1. 读取xml文档
2. 使用xml dom来循环遍历文档
3. 读取值并存储在变量中
- 使用json
1. 读取json字符串
2. 用eval( ) 处理json字符串

json示例

{
   "people":[
      {"name":"bill","age":"23",sex:"男"},
      {"name":"phobe","age":"23",sex:"女"},
      {"name":"geoge","age":"22",sex:"男"},
    ]
}
//这个 people 对象是包含 3 个人记录(对象)的数组。

json的语法规则

花括号表示对象
var object = {}; 方括号表示数组
var arr =[]; 属性名要用双引号包围起来
var student ={ "name":"tracy"} 对象和属性值之间用冒号隔开
var student ={ "name":"linda"} 多个属性由逗号分隔
var students = {"name": "judy","age":18} json数据的书写格式是:名称/值对
name":"helen"//等价于javascript语句 name = "helen

json怎么用?

把json文本转换成javascript对象
从web服务器上读取json数据(作为文件或httprequest),将json数据转换为javascript对象,然后在网页中使用该数据。
由于json语法是javascript语法的子集,javascript函数eval()可用于将json文本转换成javascript对象。
var employeeinfo = '{ "employees" : [' +
'{ "firstname":"bill" , "lastname":"gates" },' +
'{ "firstname":"george" , "lastname":"bush" },' +
'{ "firstname":"thomas" , "lastname":"carter" } ]}';  
//注意两边的括号 
var  obj = eval("(" + employeeinfo + ")");
alert(obj.employees[i].firstname)//bill
序列化与反序列化
来看一看廖老师怎么说:如果我们要在不同的语言之间传递对象,就必须把对象序列化为标准格式,比如xml,但更好的方法是序列化为json,因为json表示出来就是一个字符串,可以被所有语言读取,也可以方便地存储到磁盘或者通过网络传输。json不仅是标准格式,并且比xml更快,而且可以直接在web页面中读取,非常方便。
简单理解就是对象序列化为二进制序列,才能在网络上传送,接收方则需要将二进制序列再恢复为对象。
//序列化类
public class personnel{
   public int id {get;set;}
   public string name{get;set;}
}
//执行序列化与反序列化
private void fmmain_load(object sender, eventargs e)
 {
      personnel personnel = new personnel();
      personnel.id = 1;
      personnel.name = "小仙女";
      javascriptserializer jsonserializer = new javascriptserializer();
      //执行序列化  需要引入system.web.script.serialization命名空间
      string r1 = jsonserializer.serialize(personnel); //r1输出结果:{"id":1,"name":"小仙女"} 
      //执行反序列化
      personnel _personnel = jsonserializer.deserialize(r1);
 }