json入门(二)

背景php

以前最先的时候,也见过相似于这样的字符串:html

{"list":[          
{"ArticleId":7392749,"BlogId":1158641,"CommentId":2182295,"Content":"偶是来测试评论滴,哈哈","ParentId":0,"PostTime":"2分钟前","Replies":null,"UserName":"crifan","Userface":"http://avatar.csdn.net/E/D/E/3_crifan.jpg"},            
{"ArticleId":7392749,"BlogId":1158641,"CommentId":2182254,"Content":"mark__","ParentId":0,"PostTime":"52分钟前","Replies":null,"UserName":"mars_tl","Userface":"http://avatar.csdn.net/9/3/0/3_mars_tl.jpg"}],"page":{"PageSize":20,"PageIndex":1,"RecordCount":0,"PageCount":0},"fileName":"7392749"}python

很明显,这样的字符,看起来,就像是有一种规律的,可是当时只是知道这是个字符串而已。正则表达式

后来,渐渐地,了解到,原来这样的字符串,是有特定的格式和规律的,其叫作JSON字符串。json

什么是JSON

后来就专门去查了查json是啥。网络

此处,先引用:函数

JSON Wiki中的话:工具

JSONJavascript Object Notation)是一种轻量级的数据交换语言,以文字为基础,且易于让人阅读。尽管JSON是在Javascript的一个子集,但JSON是独立于语言的文本格式,而且采用了相似于C语言家族的一些习惯。post

此处,简单能够理解为:学习

JSON的简要解释

  • JSON全称是Javascript Object Notation,很明显,是源于Javascript。此处暂可不深究这方面,知道这点便可。

  • JSON是一种字符串,有必定特定的语法格式的字符串;

  • JSON之因此定义这样的语法格式,目的在于方便数据的交换。即,一些数据,经过JSON这种格式,从一个地方,尤为是网络上,发送,传递到另一个地方,而后使得接受者,也很容易理解相关的数据。

而具体关于JSON的语法,即规定的怎么写,具体是啥样的格式,再也不赘述,只尽可能简单的介绍一下:

最最基本的语法是:

JSON的最基本语法

  • 对象,即一个变量名,一个值,对应的写法是:{name:value}

  • 列表,有多个元素是,写法是:[collection, collection]

余下的,按照正常逻辑理解便可,好比字符串是两个双引号""括起来的,数字是0到9等等。

JSON的例子

wiki中举的例子是:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
{
      "firstName" : "John" ,
      "lastName" : "Smith" ,
      "male" : true ,
      "age" : 25,
      "address" :
      {
          "streetAddress" : "21 2nd Street" ,
          "city" : "New York" ,
          "state" : "NY" ,
          "postalCode" : "10021"
      },
      "phoneNumber" :
      [
          {
            "type" : "home" ,
            "number" : "212 555-1234"
          },
          {
            "type" : "fax" ,
            "number" : "646 555-4567"
          }
      ]
  }

经过此例子,也就算很形象的知道了,JSON算是一个结构很清晰的,用于表示数据的一种格式。

JSON的一些注意事项

发送的JSON字符串是紧凑型(无缩进的)

须要说明的是,因为JSON的发明,就是为了用于数据交换,因此,在发送JSON字符串以前,其实都不是你所看到的上面的,格式化,带缩进的那种,都是紧凑型的,字符之间没有空格的,

就像此文最开始所举例的那种的,将这些紧凑的数据,发送给别人。

用格式化工具格式化JSON字符串(为带缩进的)以方便查看

而接受者,做为人类,想要查看数据,能清晰的看懂数据,通常会用一些工具,好比Notepad++中的插件JSMin,去格式化,

把最开始咱们给出的JSON数据,格式化后的效果为:

jsmin format json

程序中是如何处理JSON的

不少程序中,都会遇到JSON字符串,因此就涉及到,如何经过程序处理JSON字符串,好比将JSON字符串,转换为对应的字典类的变量等等。

很明显,固然是能够经过你手动写代码,一点点处理的,可是更明显,效率很低。

并且现实中,的确是,针对不一样的语言,已经有了对应的JSON相关库函数,去用于处理JSON字符串了。

对于这些不一样语言的,对应的JSON处理的库,人家JSON官网中,已经帮你整理好了。你本身去看,学习了解对应的JSON库如何使用的,便可。

其中包括了N种语言的,N个JSON处理相关的库,我就不重复去罗列了,本身去JSON官网看便可。

此处,只是说说,我所用过的一些JSON的库:

Python语言中自带的处理JSON的库:json

以前折腾过相关的,用Python语言处理JSON字符串的,用的是Python语言内置的Json库,相对仍是很好用的。

 

相关Python中如何处理json的示例代码可参考:

【整理】Python中将(字典,列表等)变量格式化成(漂亮的,树形的,带缩进的,JSON方式的)字符串输出

【经验记录】Python中json.loads的时候出错->要注意要解码的Json字符的编码

另外,有时候,遇到一些特殊的状况,也是能够借助BeautifulSoup库去帮忙处理的:

【已解决】用BeautifulSoup解析Html格式的Json字符串

 

C#中处理JSON字符串

以前也折腾过C#中处理JSON字符串的。

只不过当时发现C#内置没有相关的JSON的库,还须要再安装第三方的JSON库,以为太麻烦,因此暂且放弃了:

【已放弃】C#中实现将Json字符串转换为变量

【已解决】C#中解析Json字符串

【未解决】C#中从Json.Net解析后的Json中得到某个列表类型的变量

就暂且先用正则表达式的类Regex去手动处理,提取所需的内容了。

固然,若是有人有需求,仍是值得去安装第三方JSON库,去处理Json字符串的。

 

后来的一些折腾,C#中,已经能够很好的处理JSON字符串了。

只是仍是须要依赖于.NET 3.5+中的JavaScriptSerializer才行。

详见:

【已解决】C#中,Json字符串转字典,并得到对应的Dictionary的键值

相关文章
相关标签/搜索