什么是json?_string转json

什么是json?_string转json1.什么是JSONJSON概念很简单,JSON是一种轻量级的数据格式,他基于javascript语法的子集,即数组和对象表示。由于使用的是javascript语法,因此JSON定义可

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

1. 什么是 JSON

      JSON概念很简单,JSON 是一种轻量级的数据格式,他基于 javascript 语法的子集,即数组和对象表示。由于使用的是 javascript 语法,因此JSON 定义可以包含在javascript 文件中,对其的访问无需通过基于 XML 的语言来额外解析。不过在使用 JSON 之前,很重要的一点是理解 javascript 中数组及对象字面量的特殊语法。

1.1 数组字面量

         数组字面量,是用一对方括号括起一组用逗号隔开的 javascript 值,例如:

        var aNames=[“hello”, 12, true , null];

1.2 对象字面量

        对象字面量,是通过两个花括号来定义的。在花括号内可以放置任意数量的“名称-值”对,定义格 式字符串值”。除了最后一行外,每个“名称-值”对后必须有一个逗号(这与Perl 中的联合数组的定义有些类似)。例如:

        var oCar = {

               “color”: “red”,       

              “doors” : 4,

               “paidFor” : true

        };

1.3 混合字面量

      我们可以混用对象和数组字面量,来创建一个对象数组,或一个包含数组的对象。例如:

{comments:[
{
id:1,
author:”someone1″,
url:”http://someone1.x2design.net“,
content:”hello”
},
{
id:2,
author:”someone2″,
url:”http://someone2.x2design.net“,
content:”hello”
},
{
id:3,
author:”someone3″,
url:”http://someone3.x2design.net“,
content:”hello”
}
]};

1.4 JSON 语法

      在Ajax应用中,就是服务器直接生成javascript语句,客户端获取后直接用eval方法来获得这个对象,这样就可以省去解析XML的性能损失。 同时,在javascript 通信中使用JSON作为数据格式的好处很明星,可以立即获得数据的值,因此可以更快的访问其中包含的数据。

      var oCarInfo = eval(“(” + sJSON + “)”);

请记住:在javascript中花括号也是一个语句。要让解析器知道这个花括号表示的是一个对象而非一个语句的唯一方法是能否找到封装它的圆括号 (它是用来说明代码是一个表达式而非一个语句)。

1.5 JSON 编码和解码

       作为 JSON 资源的一部分,Corockford 开发了一个能够实现 JSON 和Javascript 对象直接解码和编码的工具。这个工具的源程序可以在 www.crockford.com/JSON/json.js 中下载。

       在上面提出用到eval() 存在些固有的不足:它是用来对传入的任何 Javascript 代码求值的,而不仅仅针对JSON。因此,当涉及企业级 web 应用程序开发时,它存在很大的安全隐患。为了解决这个问题,可以使用只用来将 JSON 代码转换为 Javascript 的解析器 JSON.parse() 方法来实现。例如:

       var oObject = JSON.parse (sJSON);

       同时,它也提供了一种将 Javascript 对象转换为 JSON 字符串(数据传输时使用的)的工具(在Javascript 中没有内建这种功能支持)。你要做的只是将对象传入到 JSON.Stringify() 方法。请看下面的例子:

       var oCar = new Object();

       oCar.doors = 4;

        oCar.color = “blue”;

       oCar.year = 1995;

       oCar.drivers = new Array(“Penny”, “Dan” , “Kris”);

       document.write(JSON.stringify(oCar));

这段代码将输出如下所示的JSON 字符串:

{“doors” : 4, “color” : “blue”, “year” :1995, “drivers” : [“Penny”, “Dan” , “Kris”]}

2. JSON 与 XML

       正如上面所说,JSON 与 XML 相比的一大优点就是它更加简单。

请看 XML 数据表示实例:

使用XML表示:

<comments>
<comment>
<id>1</id>
<author>someone1</author>
<url>http://someone1.x2design.net</url>
<content>hello</content>
</comment>
<comment>
<id>2</id>
<author>someone2</author>
<url>http://someone2.x2design.net</url>
<content>someone1</content>
</comment>
<comment>
<id>3</id>
<author>someone3</author>
<url>http://someone3.x2design.net</url>
<content>hello</content>
</comment>
</comments>

使用JSON表示:

{comments:[
{
id:1,
author:”someone1″,
url:”http://someone1.x2design.net“,
content:”hello”
},
{
id:2,
author:”someone2″,
url:”http://someone2.x2design.net“,
content:”hello”
},
{
id:3,
author:”someone3″,
url:”http://someone3.x2design.net“,
content:”hello”
}
]};

       很容易发现,许多冗余的信息不见了。由于不需要有与开始标签(opening tag)匹配的结束标签(closing tag),因此传送相同的信息所需的字节数大大降低了。创始人 Corockford 将其称之为“XML 的减肥方案”)。

        JSON 格式的数据与 XML 相比,缺点是对于外行人可读性更差。当然,有一种观点是,数据交换格式不是用肉眼观察的。如果是通过工具对来回传送的数据进行创建和解析,那么的确没有理 由要求数据必须使人们易于阅读。问题的实质在于:存在可用的 JSON 工具。

3. 服务器端 JSON 工具

java :java JSON 工具,由 Douglas Crock ford 开发,可在 www.crockford.com/JSON/java/

           中下载,它可以在 JSP 中使用。

4. JSON 优势与缺点

       JSON不仅减少了解析XML解析带来的性能问题和兼容性问题,而且对于javascript来说非常容易使用,可以方便的通过遍历数组以及访问对象属性 来获取数据,其可读性也不错,基本具备了结构化数据的性质。不得不说是一个很好的办法,而且事实上google maps就没有采用XML传递数据,而是采用了JSON方案。

       JSON 另外一个优势是跨域可行性,例如你在www.xxx.com的 网页里使用是完全可行的,这就意味着你可以跨域传递信息。而使用XMLHttpRequest却获取不了跨域的信息,这是javascript内部的安全 性质所限制的。

       JSON看上去很美,是不是就能完全取代XML呢?事实并非如此,而原因就在于XML的优势:通用性。要使服务器端产生语法合格的javascript代 码并不是很容易做到的,这主要发生在比较庞大的系统,服务器端和客户端有不同的开发人员。它们必须协商对象的格式,这很容易造成错误。

  

JSON.parse(jsonstr); //可以将json字符串转换成json对象 
JSON.stringify(jsonobj); //可以将json对象转换成json自符串 

js重新刷新本页面:window.location.reload();

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/168194.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Android工具类整合「建议收藏」

    Android工具类整合「建议收藏」Android-JSONUtil工具类常用的Json工具类,包含Json转换成实体、实体转json字符串、list集合转换成json、数组转换成jsonpublicclassJSONUtil{privatestaticfinalStringTAG=JSONUtil.class.getSimpleName();privateJSONUtil()…

  • 科里奥利力的方向

    判断参考系转动的角速度方向根据右手定则,从上往下看,四指绕着物体转动方向,拇指指向的方向为角速度的方向。科里奥利力向上:科里奥利力向下:向量外积大小:a×b=|a||b|sin<a,b>=c方向:从向量a绕到向量b形成的轨迹运用右手定则(同上),拇指指向为c的方向。科里奥利力的方向根据F=2mν×ω科里奥利力的方向由物体的速度指向参考系的角速度,假设上图a…

  • php宽字节注入,[投稿]宽字节注入详解

    php宽字节注入,[投稿]宽字节注入详解前言在mysql中,用于转义的函数有addslashes,mysql_real_escape_string,mysql_escape_string等,还有一种情况是magic_quote_gpc,不过高版本的PHP将去除这个特性。首先,宽字节注入与HTML页面编码是无关的,笔者曾经看到Default<metacharset=utf8>1<metacharset=utf8>…

    2022年10月14日
  • mysql-front 下载安装

    mysql-front 下载安装mysql-front 下载安装

  • Java中&&和&以及||和|的区别「建议收藏」

    Java中&&和&以及||和|的区别「建议收藏」在java的逻辑运算符中,有这么四类:&amp;&amp;(短路与),&amp;(与),|(或),||(短路或)。&amp;&amp;和&amp;都是表示与,区别是&amp;&amp;只要满足第一个条件,后面条件就不再判断。而&amp;要对所有的条件都进行判断。看下面的程序:“&amp;”操作:publicclassOperateDemo01{/**验证"与"…

  • 快速刷微信小程序访问量和浏览量

    快速刷微信小程序访问量和浏览量1、先开发小程序,小程序需要有亮点,毕竟新颖(这样别人才更好去点击查看)。2、流量主开通的条件是独立访客(UV)不低于1000,1000人说多不多,说少也不少,因为小程序是没有链接的,是不可以进行一个流量刷取的,独立访客是需要1000个实实在在的用户,并不是访问量。3、开发好小程序之后,自己要为自己的小程序做好宣传,前提小程序需要做的完美,小程序一定要做分享功能,将小程序分享到个人、微信群、朋友圈,这样估计很容易就达到几百了。4、后续可以去各种论坛发帖,切记不要恶意刷用户量,会导致小程序被封。5

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号