JSON

json学习整理

字号+ 作者:H5之家 来源:H5之家 2016-09-20 18:00 我要评论( )

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript的一个子集。 JSON采用完全独立

JSON(javascript Object Notation):

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。

Json的出现:

了解:在设计要与远程计算机进行通信的应用程序时,必须选择一种数据格式和交换协议。有多种开放式标准方案可供选择,而最理想的选择取决于应用程序需求和已有的功能。例如,基于 SOAP 的 web 服务格式化数据的方式是将 XML 负载封装到 SOAP 信封中。

XML 对于许多应用场合非常好用,但在另外一些情况下则存在缺陷,使用不太理想:比如:XML 通常使用效果不太理想的领域之一是 Ajax 风格的 web 应用程序。Ajax 是用于构建交互式 web 应用程序的技术,此类应用程序通过使用对 web 服务器的带外轻型调用来代替整页回发,从而提供了更为迅捷的用户体验。这些异步调用通过 JavaScript 在客户端进行初始化,涉及设置数据格式、将其发送到 web 服务器,以及分析和处理返回的数据。大多数浏览器可以构建、发送和分析 XML,而 JavaScript
Object Notation(或 JSON)提供了一种适用于 Ajax 风格的 web 应用程序的标准数据交换格式。

如何使一种标记语言轻松集成到HTML页面中以满足Ajax的要求?

利用所有主流浏览器中的一种通用组件——JavaScript引擎。XML需要使用DOM之类的机制来访问数据并将数据整合到布局之中,我们不再使用像XML这样的格式来交付Ajax更新,而是采用一种更为简单直观的方式,采用JavaScript引擎自然匹配的格式——也就是JSON。

Json的使用场合:

JSON 是一种基于文本的开放式数据交换格式。与 XML 一样,它便于读者阅读、独立于平台,并且具有广泛的可实现性。根据 JSON 标准设置格式的数据是轻型的,可由 JavaScript 实现轻而易举地进行分析,使之成为适用于 Ajax web 应用程序的理想数据交换格式。JSON 主要是一种数据格式,因此它不局限于 Ajax web 应用程序,在任何场合,只要应用程序需要将结构化信息作为文本进行交换或存储,即可使用它。

JSON与XML的重要特征区别:

JSON测试需要的jar包:

json-lib-2.3-jdk15.jar

commons-collections.jar

commons-lang.jar

commons-logging.jar

commons-beanutils.jar

ezmorph-1.0.6.jar

xom-1.1.jar

JSON 数据格式解析

和 XML 一样,JSON 也是基于纯文本的数据格式。由于 JSON 天生是为 JavaScript 准备的,因此,JSON 的数据格式非常简单,您可以用 JSON 传输一个简单的 String,Number,Boolean,也可以传输一个数组,或者一个复杂的 Object 对象。

表示一个对象:、对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。比如:有一个对象中有“name”和“type” 属性

{

“name”:“万象” ,

“type”:“软件”

}

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

[“德胜”,“万象”]


表示一个集合:对象集合

[ {name:”万象”,type:”软件”} ,{name:”中软” , type:”软件”}]

Json/数组的转换:

数组 > JSON:

//定义数组

boolean[] booleanArray = new boolean[]{true, false, true};

//得到解析后的数组

JSONArray json1 = JSONArray.fromObject(booleanArray);

结果:

1 [true,false,true]

Json/List集合的转换:

例:项目文件夹中拥有货物参数(Shop)和货物参数列表(ShopList)两个实体

Shop包含name和property两个字段,ShopList包含Shop的列表。

对应的json表示:这个表示两个对象

public void testBean() {

//json解析为对象集合

String s = "[{'name':'重量','property':'p1'},{'name':'体积','property':'P3'}]";

JSONArray array = JSONArray.fromObject(s);

//List list = new ArrayList();

for (int i = 0; i < array.size(); i++) {

JSONObject object = JSONObject.fromObject(array.get(i));

//解析为:Bean对象

Shop shop = (Shop) JSONObject.toBean(object, Shop.class);

System.out.println(shop.getName() + " >>> " + shop.getProperty());

//这块可以将对象添加到LIST当中,相当于转换为LIST

//list.add(shop);

//list.add(shop);//此处得到的就是普通的arrayList

//集合转换为JSON

List<Object> list = new ArrayList<Object>();

list.add(new Shop("米老鼠", "男"));

list.add(new Shop("唐老鸭", "X"));

JSONArray json3 = JSONA rray.fromObject(list);

System.out.println(json3);

结果:[{"name":"米老鼠","property":"男"},{"name":"唐老鸭","property":"X"}]

JSON/MAP之间的转换:

Map > json:

//创建一个集合 添加值

Map map = new HashMap();

map.put("name", "json");

map.put("bool", Boolean.TRUE);

map.put("int", new Integer(1));

map.put("arr", new String[]{"a", "b"});

map.put("func", "function(i){ return this.arr[i]; }");

//将集合解析为 json

JSONObject jsonObject1 = JSONObject.fromObject(map);

System.out.println(jsonObject1);

结果为:

{"arr":["a","b"],"int":1,"name":"json","func":function(i){ return this.arr[i]; },"bool":true}

因为 JSONObject本身就包含了一个Map对象存储数据,你可以像Map对象一样对其Put和Get:如

String s="{'a':['a','b'],'int':1,'name':'json','bool':true}";

JSONObject object = JSONObject.fromObject(s);

object.put("asd","sdf");

System.out.println(object);

结果为:

{"a":["a","b"],"int":1,"name":"json","bool":true,"asd":"sdf"}

JSON/静态BEAN的转换:(此处“静态”意思是转换后的bean再项目中已经定义过的。

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • C#将Json解析成DateTable的方法

    C#将Json解析成DateTable的方法

    2016-09-21 11:00

  • php判断json格式是否正确和是否为json格式的方法

    php判断json格式是否正确和是否为json格式的方法

    2016-09-19 16:01

  • iOS 网络编程 (四)JSON解析

    iOS 网络编程 (四)JSON解析

    2016-09-19 10:00

  • Android学习笔记45之gson解析json

    Android学习笔记45之gson解析json

    2016-09-18 18:01

网友点评
c