Json 数据格式与使用

前半部分内容来自http://www.json.org/json-zh.html

JSON(JavaScript ObjectNotation) 是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。 它基于JavaScript Programming LanguageStandard ECMA-262 3rd Edition - December 1999的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java,JavaScript, Perl, Python等)。 这些特性使JSON成为理想的数据交换语言。

JSON建构于两种结构:

  • “名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。
  • 值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。

这些都是常见的数据结构。事实上大部分现代计算机语言都以某种形式支持它们。这使得一种数据格式在同样基于这些结构的编程语言之间交换成为可能。

JSON具有以下这些形式:

对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。

数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。

值(value)可以是双引号括起来的字符串(string)、数值(number)、true、false、 null、对象(object)或者数组(array)。这些结构可以嵌套。


有关Json格式的注意:

Json对象是一个无序的“‘名称/值’对”集合,所以假如某个sug系统返回的数据是下面的Json格式:

{data:{singer:[”刘德华”,”刘若英”], album:”留金岁月”, song:”留恋”}}

则singer, album,song的展现顺序是不能由后端确定的,只能前端以固定的逻辑确定,而如果加入下面的描述:

{data:{singer:[”刘德华”,”刘若英”], album:”留金岁月”, song:”留恋”},pro:[“song”,  “singer”,“album”]}

则可以确定按照song,singer,album的顺序展示,因为json中数组被定义为有序的。一个更加详细的数据:

window.baidu.sug({"data":{"song":[{"songid":"2078067","songname":"\u5341\u5e74","artistname":"\u5218\u5fb7\u534e"},{"songid":"539896","songname":"\u5929\u610f","artistname":"\u5218\u5fb7\u534e"}],"artist":[{"artistid":"1696","artistname":"\u5218\u5fb7\u6d77","artistpic":""},{"artistid":"2868","artistname":"\u5218\u5fb7\u5f3a","artistpic":""}],"album":[{"albumid":"937365","albumname":"\u7ecf\u5178\u91cd\u73b0","artistname":"\u5218\u5fb7\u534e","artistpic":""},{"albumid":"2078643","albumname":"\u7b28\u5c0f\u5b69Disc 2","artistname":"\u5218\u5fb7\u534e","artistpic":""}]},"pro":["artist","song","album"]});

另外一个sug 结果数据的demo:

{"q":"上地七街","p":false,"t":2,"businfo":[{"uid":"8b3fad144cf38de8d72ce2f2", "catid":524, "cityid":131, "city":"北京市",             "district":"海淀区", "desc":"专28路", "name":"上地七街西口", "x":12947575.396300, "y":4845471.365100},{"uid":"8c85633abc8eb39234b06c42", "catid":524, "cityid":131, "city":"北京市",             "district":"海淀区", "desc":"365路 509路 982路 运通114路 专28路", "name":"上地七街环岛西", "x":12947650.160000, "y":4845627.740000}],"poiinfo":[{"uid":"b7bce91565e993afb817e788", "catid":222, "cityid":131, "city":"北京市",             "district":"海淀区", "desc":"", "name":"上地七街/上地东路(路口)", "x":12948263.740000, "y":4845827.710000},{"uid":"763b1894d12d92d2f82213c6", "catid":222, "cityid":131, "city":"北京市",             "district":"海淀区", "desc":"", "name":"上地七街/创业路(路口)", "x":12948089.370000, "y":4845768.780000},{"uid":"3349c77f471dd5b6f60e7773", "catid":222, "cityid":131, "city":"北京市",             "district":"海淀区", "desc":"", "name":"上地七街/开拓路(路口)", "x":12947707.010000, "y":4845627.630000},{"uid":"4d5a45cdc6c76b327069d336", "catid":222, "cityid":131, "city":"北京市",             "district":"海淀区", "desc":"", "name":"上地七街/上地西路(路口)", "x":12947535.380000, "y":4845557.650000}]}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值