Json数据类型和格式
- 格式:pdf
- 大小:610.66 KB
- 文档页数:6


JSON释义:Json(JavaScript Object Notation)是一种轻量级的数据交换格式。
它基于JavaScript (Standard ECMA -262 3rd Edition-December 1999)的一个子集。
Json采用完全独立于语言的文本格式,但是也使用了类似C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Pert、Python等)。
这些特性使JSON成为理想的数据交换语言。
易于人阅读和编写,同时也易于机器解析和生成(网络传输速度快)一、JSON语法1.1 JSON语法规则JSON语法是JavaScript对象表示语法的子集。
●数据在名称/值对中●数据由逗号分隔●花括号保存对象●方括号保存数组1.2 JSON名称/值对JSON数据的书写格式是:名称/值对名称/值对组合中的名称写在前面(在双引号中),值对写在后面(同样在双引号中),中间用冒号隔开:“firstName”:”John”这很容易理解,等价于这条JavaScript语句:firstName=”John”1.3 JSON值JSON值可以是:●数字(整数或浮点数)●字符串(在双引号中)●逻辑值(true或false)●数组(在方括号中)●对象(在花括号中)●Null二、基础结构2.1 JSON结构有两种结构JSON简单说就是JavaScript中的对象和数组,所以这两种结构就是对象和数组两种结构,通过这两种结构可以表示各种复杂的结果1.对象:对象在js中表示”{}”括起来的内容,数据结构为{key:value,key:value…}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为对象key获取属性值,这个属性值的类型可以是数字、字符串、数组、对象几种。
2.数组:数组在js中是中括号”[]”括起来的内容,数据结构为[“java”,”javascript”,”vb”…],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是数字,字符串,数组,对象几种。
各种JSON格式数据⼀、数组中有多个对象,对象中的字段是数组[{"jingyesi": ["床前明⽉光","疑是地上霜","举头望明⽉","低头思故乡"]},{"youziyin": ["慈母⼿中线","游⼦⾝上⾐","临⾏密密缝","意恐迟迟归","谁⾔⼨草⼼","报得三春晖"]}]代码如下://1.声明数组string[] arry1 = { "床前明⽉光", "疑是地上霜","举头望明⽉","低头思故乡"};//2、声明对象var obj1 = new JObject();//3、把数组加⼊对象中的字段obj1.Add("jingyesi",JArray.FromObject(arry1));string[] arry2 = {"慈母⼿中线","游⼦⾝上⾐","临⾏密密缝","意恐迟迟归","谁⾔⼨草⼼","报得三春晖"};var obj2 = new JObject();obj2.Add("youziyin",JArray.FromObject(arry2));//4.声明ogject的集合,把两个对象加⼊进去List<object> data = new List<object>() { obj1,obj2};Console.WriteLine(JArray.FromObject(data));⼆、json数组中加⼊新项1、数值型数组JArray a = new JArray() {"1","2","3" };a.Add("4");Console.WriteLine(a);输出:["1","2","3","4"]如果要加⼊新的数值型数组⽐如加⼊b数组JArray b = new JArray() {"4","5","6" };可以遍历b,把⼀项⼀项加⼊aJArray a = new JArray() {"1","2","3" };JArray b = new JArray() { "4", "5", "6" };foreach (var s in b){a.Add(s);}Console.WriteLine(a);代码输出合并后的数组["1","2","3","4","5","6"]2、对象型数组string json = "[{\"Name\" : \"Jack\", \"Age\" : 34},{\"Name\" : \"Abel\",\"Age\":29}]"; var a = JArray.Parse(json);var user = new{Name = "Lucy",Age = 18};a.Add(JObject.FromObject(user));Console.WriteLine(a);输出:[{"Name": "Jack","Age": 34},{"Name": "Abel","Age": 29},{"Name": "Lucy","Age": 18}]。
JSON 数据格式JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。
JSON采用完全独立于语言的文本格式,这些特性使JSON成为理想的数据交换语言。
易于人阅读和编写,同时也易于机器解析和生成。
基础结构JSON建构于两种结构:1. “名称/值”对的集合(A collection of name/value pairs)。
不同的语言中,它被理解为对象(object),记录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组(associative array)。
2. 值的有序列表(An ordered list of values)。
在大部分语言中,它被理解为数组(array)。
基础示例简单地说,JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从Web 客户机传递给服务器端程序。
这个字符串看起来有点儿古怪,但是JavaScript 很容易解释它,而且 JSON 可以表示比"名称 / 值对"更复杂的结构。
例如,可以表示数组和复杂的对象,而不仅仅是键和值的简单列表。
表示名称 / 值对按照最简单的形式,可以用下面这样的 JSON 表示 "名称 / 值对" :{ "firstName": "Brett" }这个示例非常基本,而且实际上比等效的纯文本 "名称 / 值对" 占用更多的空间:firstName=Brett但是,当将多个"名称 / 值对"串在一起时,JSON 就会体现出它的价值了。
首先,可以创建包含多个"名称 / 值对"的记录,比如:{ "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" }从语法方面来看,这与"名称 / 值对"相比并没有很大的优势,但是在这种情况下 JSON 更容易使用,而且可读性更好。
json数据格式说明格式说明json⽂件由对象(集合)、数组、key/value元素组成,可以相互嵌套。
使⽤⼤括号包围的是对象,使⽤中括号包围的是数组,冒号分隔的是元素。
元素的key只能是字符串。
元素的value数据类型可以是:number:整数和浮点数都属于number类型,可以是正负数string:字符串bool:true/falsearray:使⽤中括号包围的部分是arrayobject:使⽤⼤括号包围的是对象null:空。
⼀般是这个值本来应该是某个object的,但是object不存在,于是为Null对象、数组容器中每个元素之间使⽤逗号隔开,容器的最后⼀个元素不加逗号顶级对象都是匿名的,也就是没有key下⾯是⼀个json格式数据的⽰例:{"id":1,"content":"hello world","author":{"id":2,"name":"userA"},"published":true,"label":[],"nextPost":null,"comments":[{"id":3,"content":"good post1","author":"userB"},{"id":4,"content":"good post2","author":"userC"}]}⽤注释分析这个json:{ # 对象容器,下⾯全是这个对象中的属性。
注意key全都是字符串"id":1, # ⽂章ID号,元素,value类型为number"content":"hello world", # ⽂章内容"author":{ # ⼦对象,⽂章作者"id":2, # 作者ID"name":"userA" # 作者名称,注意⼦容器结束,没有逗号},"published":true, # ⽂章是否发布,布尔类型"label":[], # ⽂章标签,没有给标签,所以空数组"nextPost":null, # 下⼀篇⽂章,是对象,因为没有,所以为null"comments":[ # ⽂章评论,因为可能有多条评论,每条评论都是⼀个对象结构{ # 对象容器,表⽰评论对象"id":3, # 评论的ID号"content":"good post1", # 评论的内容"author":"userB" # 评论者},{"id":4,"content":"good post2","author":"userC"}]}⼀般来说,json格式转换成语⾔中的数据结构时,有以下⼏个⽐较通⽤的规则(只是⽐较普通的⽅式,并⾮⼀定):json对象映射成语⾔中的hash/struct,有时候没有合适的结构,将映射成类。