数据格式json讲解

JSON


在使用名称/值对或XML时,实际上是使用javascript从应用程序中取得数据并将数据转换成另一种数据格式。javascript不仅作为格式化语言使用,还可以使用javascript语言中的对象来表示数据。

将javascript对象转换成可以随请求发送的数据(同步异步都可以)。

简单的说,JSON可以将javascript对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松的传递这个字符串,或者在异步应用程序中将字符串从web客户机传递给服务器端程序。

JSON可以表示数组和复杂的对象,而不仅仅是键和值得简单列表。


JSON表示名称/值对:

{"name1":"rose1","name2":"rose2","name3":"rose3"}

多个键/值逗号分开。


值的数组

表示一组值时,将多个带花括号的记录分组在一起。

{
  "people":[
 {"name":"rose1","age":"18","email":"1554@555.com"},
  {"name":"rose2","age":"28","email":"15dd4@555.com"},
   {"name":"rose3","age":"38","email":"5554@555.com"}
  ]
}

只有people是变量,值是包含三个条目的数组,每个条目是一个人的记录,其中包含名字,年龄和电子邮件。上面演示如果用括号将记录组合成一个值,当然也可以使用相同的语法表示多个值(每个值包含多个记录)

{
  "authors":[
 {"name":"rose1","age":"18","email":"1554@555.com"},
  {"name":"rose2","age":"28","email":"15dd4@555.com"},
   {"name":"rose3","age":"38","email":"5554@555.com"}
  ],
    "musicians":[
 {"name":"rose1","age":"18","email":"1554@555.com"},
  {"name":"rose2","age":"28","email":"15dd4@555.com"},
   {"name":"rose3","age":"38","email":"5554@555.com"}
  ]
}

注意了 在不同的条目authors,musicians之间,里面的名称/值可以不一样的。在处理JSON格式的数据时,没有需要遵守的预定义的约束。所以,在同样的数据结构中,可以用不同的数据表示方式,甚至可以以不同的方式来表示同一事物。


在javascript中使用JSON

JSON是javascript原生格式,这意味着在javascript中处理JSON数据不需要任何特殊的API或工具包。

将JSON数据赋值给变量:

可以将JSON格式的数据字符串直接赋值给javascript变量。

 var people=
{
  "authors":[
 {"name":"rose1","age":"18","email":"1554@555.com"},
  {"name":"rose2","age":"28","email":"15dd4@555.com"},
   {"name":"rose3","age":"38","email":"5554@555.com"}
  ],
    "musicians":[
 {"name":"rose1","age":"18","email":"1554@555.com"},
  {"name":"rose2","age":"28","email":"15dd4@555.com"},
   {"name":"rose3","age":"38","email":"5554@555.com"}
  ]
}

访问数据:

上面的长字符串实际上只是一个数组,将这个数组放进javascript变量之后,就可以轻松访问它。只需要用点好表示法来表示数组元素。

所以要访问authors列表中的第一个条目的姓名:

people.authors[0].name;


注意,数组索引是从0开始。所以这行代码首先访问变量people,然后移动到authors条目,再移动到第一个记录,最好访问name键的值。结果是:rose1。

使用这样的语法可以处理任何JSON格式的数据。


修改JSON数据

可以用点号和括号访问数据,也可以用同样的方法修改数据。

people.authors[0].name="summer";

在将字符串转换为javascript对象之后,就可以这样修改变量的值。

转换回字符串

将对象转换回字符串。

String newJSONtext=people.toJSONString();

现在就获得了一个可以在任何地方使用的文本字符串,如,将它用在AJAX中的请求字符串。

重要的是,可以将任何javascript对象转换为JSON文本。并非只能处理原来用JSON字符串赋值的变量。现在对名为的对象进行转换,只需执行相同形式的命令即可:

String myObjectJSON=people.toJSONString();




使用JSON,只需要一个简单的函数,就可以获得经过格式化的数据,这样就可以将数据转换为可以在请求中发送给服务器端程序的格式。

这种格式很容易用于发送和接收与对象甚至对象数组对应的数据。


JSON的真正价值:

JSON是适用于ajax应用程序的一种有效格式,因为它使javascript对象和字符串值之间得以最快转换,由于ajax应用程序很适合用纯文本发送给服务器端程序,还可以接收纯文本。

XML也可以提供文本方面的类似的益处,但用于将javascript对象转换成XML的几个现有的API没有JSON API成熟。

JSON最大的价值及时可以将javascript真正的作为javascript而非数据格式语言进行处理。你之前所学到的所有有关javascript对象的技巧都额可以在代码中使用,而无需考虑如何将这些对象转换为文本。你只需在之后,用该JSON方法调用即可:

String myObjectJSON=myObject.toJSONString();

现在就可以可以将结果发送给服务器了。


将JSON发送给服务器

通过GET以名称/值对发送JSON

将JSON数据发给服务器的最简单方法就是将其转换为文本,然后以名称/值对的值得方法进行发送。注意的是,JSON格式的数据是相当长的一个对象。

var people=
{
  "authors":[
 {"name":"rose1","age":"18","email":"1554@555.com"},
  {"name":"rose2","age":"28","email":"15dd4@555.com"},
   {"name":"rose3","age":"38","email":"5554@555.com"}
  ],
    "musicians":[
 {"name":"rose1","age":"18","email":"1554@555.com"},
  {"name":"rose2","age":"28","email":"15dd4@555.com"},
   {"name":"rose3","age":"38","email":"5554@555.com"}
  ]
}



以上是JSON格式的一个javascript对象。

要以名称/值对将其发送到服务器端,如下

var  url="xx.php?people="+people.toJSONString();
myhttp.open("GET",url,true);
myhttp.send(null);

值得注意的是,JSON数据中会有空格和各种字符,web浏览器往往会试着对其进行解析。要确保这些字符不会再服务器上(或者在将数据发送给服务器的过程中)引起混乱,需要用javascript的escape()方法处理下。

var  url="xx.php?people="+escape(people.toJSONString();)
myhttp.open("GET",url,true);
myhttp.send(null);

TIP: escape()函数可以处理空格,斜线和其他任何可能影响浏览器的内容,并将它们转换成WEB可用字符(如




在使用名称/值对或XML时,实际上是使用javascript从应用程序中取得数据并将数据转换成另一种数据格式。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值