JSON的浅谈和基本介绍

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lvdepeng123/article/details/81066277
一: 什么是JSON?


         JSON(JavaScript Object Notation) 是一种轻量级的数据交换格局。它基于ECMAScript的一个子集。 JSON选用完全独立于言语的文本格局,但是也使用了类似于C言语宗族的习气(包含C、C++、C#、Java、JavaScript、Perl、Python等)。这些特性使json调试成为抱负的数据交换言语。 易于人阅览和编写,同时也易于机器解析和生成(一般用于提高网络传输速率)。


二: 在学习JavaScript的过程中,我们接触了一种新的数据格式——JSON数据格式。JSON的全称是”JavaScript Object Notation”,意思是javascript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式。 
JSON的格式 
JSON 数据的书写格式是键(名称)/值对。 
JSON 键值对是用来保存 JS 对象的一种方式,和 JS 对象的写法也大同小异,键/值对包括字段名称(在双引号中),后面写一个冒号,然后是值。 
JSON 值可以是:字符串(在双引号中)、数组(在中括号中)、数字(整数或浮点数)、逻辑值(true 或 false)、对象(在大括号中)、 null。 
JSON结构 
JSON结构有两种结构,就是对象和数组。通过这两种结构可以表示各种复杂的结构。 
{"province": "Shanxi"} 可以理解为是一个包含province为Shanxi的对象, 
["Shanxi","Shandong"]这是一个包含两个元素的数组 
而 [{"province": "Shanxi"},{"province": "Shandong"}] 就表示包含两个对象的数组。 

当然了,你也可以使用 {"province":["Shanxi","Shandong"]} 来简化上面的JSON,这是一个拥有一个name数组的对象。  

下面是一小段JSON代码: 

{“skillz”: {“web”:[ {“name”: “html”, “years”: “5” }, {“name”: “css”, “years”: “3” }],”database”:[ {“name”: “sql”, “years”: “7” }]}} 

花括弧,方括弧,冒号和逗号 
花括弧表示一个“容器” 
方括号装载数组 
名称和值用冒号隔开 

数组元素通过逗号隔开 

三: Json 和 xml的区  

    1.       在可读性方面,JSON和XML的数据可读性基本相同。JSON和XML的可读性可谓不相上下,一边是建议的语法,一边是规范的标签形式,很难分出胜负。


  2.       在可扩展性方面,XML天生有很好的扩展性,JSON当然也有,没有什么是XML能扩展,JSON不能的。


  3.       在编码难度方面,XML有丰富的编码工具,比如Dom4j、JDom等,JSON也有json.org提供的工具,但是JSON的编码明显比XML容易许多,即使不借助工具也能写出JSON的代码,可是要写好XML就不太容易了。


  4.       在解码难度方面,XML的解析得考虑子节点父节点,让人头昏眼花,而JSON的解析难度几乎为0。这一点XML输的真是没话说。


   5.       在流行度方面,XML已经被业界广泛的使用,而JSON才刚刚开始,但是在Ajax这个特定的领域,未来的发展一定是XML让位于JSON。到时Ajax应该变成Ajaj(Asynchronous Javascript and JSON)了。

  6         JSON相对于XML来讲,数据的体积小,Json与JavaScript的交互愈加方便,Json对数据的描述性比XML较差,Json的速度要远远快于XML

  7   从内存方面,json去掉了标签,节省了大量的内存空间

例如 xml

<Book>

<name>name</name>

<author>

<name>authorname</name>

<age>23</age>

</author>

<year>2010</year>

</Book>

        json

{"name":"name","author":{"name":"authorname","age":23},"year":2010}

四 json 和js对象的转换关系

很多人搞不清楚 JSON 和 JS 对象的关系,甚至连谁是谁都不清楚。其实,可以这么理解:JSON 是 JS 对象的字符串表示法,它使用文本表示一个 JS 对象的信息,本质是一个字符串。平时说的JSON对象,是JSON格式的JS对象或是符合JSON数据结构要求的JS对象。

JSON和JS对象互转 
要实现从对象转换为 JSON 字符串,使用 JSON.stringify() 方法: 
这里写图片描述
结果: 
这里写图片描述 
要实现从 JSON 转换为对象,使用 JSON.parse() 方法: 
这里写图片描述
结果: 

这里写图片描述 


五 :json中带有转义字符

比如从后台返回这样一段json串,中间有个字段 reminderContent 这个String类型后面其实也是一个json串,后台封装数据之后就自动转义了其中的双引号,这个时候用Gson转换的时候会报错的,因为你的实体类中 reminderContent 这个字段是String类型,但是后台的这个数据中却包含有转义符号,因此无法解析成功。可以在代码中存在,入数据库中必须解析

{
    "userInfo": {
        "headPicUrl": "585658179_temphead.jpg",
        "nickName": "Mia",
        "userId": 15678355887
    },
    "reminderContent": "{\"contentText\":\"我就说一句话\",\"contentTitle\":\"提醒\",\"settingTime\":1523254256000,\"or\":\"1\"}",
    "reminderId": 152352210043891,
    "reminderTime": 1523522100447,
    "reminderType": 6
}

目前本人的方法是,先把从后台获取的整个字符串过滤一把,把其中的转义符号替换一下,比如:

String jsonStr = "后台获取的数据"
jsonStr = jsonStr.replace("\\\"", "'");

然后再解析整个Json串;

ReminderEntity reminderEntity = gson.fromJson(jsonStr, ReminderEntity.class);



猜你喜欢

转载自blog.csdn.net/lvdepeng123/article/details/81066277