Json数据格式解析,难点,易错点分析

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 以文本形式存在,既然谈到格式,说明这玩意就是一个约定。比如服务器(Java实现)与前端(可能是网页可能是PC端)进行数据交互,很多都用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包:

{
	"aa": 1,
	"bb": 2.2,
	"cc": "abc",
	"dc": {
		"ee": 33,
		"ff": 44.44
	},
	"gg": [5, 6.6, "I love you"]
}
[
	1,
	22.2,
	{
		"aa": 11,
		"bb": 22.2
	},
	[55, 77.7, {"dd": 2}]
]

 要不然是一个object(以“{”开头,以“}”结尾),要不然是一个array(以“[”开头,以“]”结尾)。

Json中文网:http://www.json.org/json-zh.html。这里主要对这个网站里几张图做一下分析。

JSON具有以下这些形式:

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

这里除了object和value之外,其余的都是简单类型,很好理解。而object和array会有嵌套操作。

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

我认为这里的重点是,“无序的“‘名称/值’对”集合”,你不能这里面加一个value,也不能加一个object(即object嵌套object),亦不能是array,反正只能是 “名称/值”对。举个例子:

{
    1,
    “name”:“Jack”,
    “girfriend”:null,
    {"height":1.81}
    [1,"hello",{"Kobe":"mvp"}]
    "Thunder":{"威少":"劲爆"},
    "Warrior”:[{"Curry":"超远三方","杜兰特"}]
}

这里第一个,第四个和第五个元素会导致错误,因为object里面只能是键值对。第六,七个是可以的,因为它们是‘名称/值’对,只不过,它们的值分别是object和array(这里就可以产生嵌套,并不是直接嵌套,而是把object和array放到‘名称/值’ 的 ‘值’里)。

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

object是无序的“名称/值”对集合,array是value的有序集合,这应该是整个Json最难点。举个例子:

[ 
   1,
   “瞎写的”,
    null,
    "myname":"李小乾”,
    {"name":"Jack","age":13},
    [{"name":"Bob"},{"father":"James"}]
] 

这里的第四个元素是错误的,因为它不是value的一种啊。记住,“名称/值”对不是value。

第五个元素是一个object,array可以嵌套object。第六个元素是一个array,array可以嵌套自己。

string与number格式,这里不讲。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值