`

JSON

    博客分类:
  • ajax
阅读更多
JSON作为一种信息的载体伴随着AJAX的红火也越来越得到广大用户的青睐和认可!在没有使用JSON的时候,数据 从后台数据库到前台AJAX的返回显示,一般都要经过SQL查询--数据封装(封装成字符串或者XML文本)--前台解析 字符串或者XML文本,提取需要的东西出来。这其中包含了太多的转换关系,劳明伤财,也有很多人在探索一种 能够使大家都能认识的数据结构,这个时候大家都想到了JSON,可以说JSON也不是新的东西,出来好多年了, Javascript一直都内置了JSON的支持,很多时候我们都是使用JSON的语法来定义一个Javascript的对象!看一看 JSON的官方网站(http://json.org/)就知道它目前基本上已经覆盖了大多数语言,这意味着大多数情况下的跨语言 环境下的数据交换,使用JSON是一个不错的选择! 1. Javascript(虽然已经内置支持,但是这里有一个开发包可以使用) (1) 使用JSON语法定义一个Javascript对象 var myJSONObject = {"bindings": [ {"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"}, {"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*"}, {"ircEvent": "PRIVMSG", "method": "randomURI", "regex": "^random.*"} ] }; myJSONObject.bindings[0].method 将返回newURI (2) 把普通字符串转换成JavaScript对象(需要扩展包支持) var myObject = JSON.parse(myJSONtext, filter); myData = JSON.parse(text, function (key, value) { return key.indexOf('date') >= 0 ? new Date(value) : value; }); (3) JSON对象转换成字符串 var myJSONText = JSON.stringify(myObject); 2. Java对JSON的支持(没有原生的支持,需要使用第三方的扩展包来实现) Java的JSON开发包很多,也有很多实用且功能强大的 (1) json-lib (http://json-lib.sourceforge.net/usage.html) a.) JSON和Java的类型对应关系 JSON Java string java.lang.String, java.lang.Character, char number java.lang.Number, byte, short, int, long, float, double true|false java.lang.Boolean, boolean null null function net.sf.json.JSONFunction array net.sf.json.JSONArray (object, string, number, boolean, function) object net.sf.json.JSONObject b.) json-lib的依赖库 jakarta commons-lang 2.3 jakarta commons-beanutils 1.7.0 jakarta commons-collections 3.2 jakarta commons-logging 1.1 ezmorph 1.0.3 xom 1.1(如果要用到xml文件的解析的话) c.) 可运行实例 package com.gomt.json.jsonlib; import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import net.sf.json.xml.XMLSerializer; import org.apache.commons.beanutils.PropertyUtils; public class JsonLibMain { public JsonLibMain() { // TODO Auto-generated constructor stub } /** * @param args * @throws NoSuchMethodException * @throws InvocationTargetException * @throws IllegalAccessException */ public static void main(String[] args) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { boolean[] boolArray = new boolean[]{true,false,true}; JSONArray jsonArray = JSONArray.fromObject( boolArray ); System.out.println("***1*** = " + jsonArray ); Collection<string> list = new ArrayList<string>(); list.add( "first" ); list.add( "second" ); jsonArray = JSONArray.fromObject( list ); System.out.println("***2*** = " + jsonArray ); jsonArray = JSONArray.fromObject( "['json','is','easy']" ); System.out.println("***3*** = " + jsonArray ); Map<string object> map = new HashMap<string object>(); 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]; }" ); JSONObject jsonObject = JSONObject.fromObject( map ); System.out.println("***4*** = " + jsonObject ); jsonObject = JSONObject.fromObject( new MyBean() ); System.out.println("***5*** = " + jsonObject ); String json = "{name=\"json\",bool:true,int:1,double:2.2,func:function(a){ return a; },array:[1,2]}"; jsonObject = JSONObject.fromObject( json ); Object bean = JSONObject.toBean( jsonObject ); System.out.print("***6*** = " + jsonObject.get( "name" ) + " " + PropertyUtils.getProperty( bean, "name" ) ); System.out.print("\t " + jsonObject.get( "bool" ) + " = " + PropertyUtils.getProperty( bean, "bool" ) ); System.out.print("\t " + jsonObject.get( "int" ) + " = " + PropertyUtils.getProperty( bean, "int" ) ); System.out.print("\t " + jsonObject.get( "double" ) + " = " + PropertyUtils.getProperty( bean, "double" ) ); System.out.print("\t " + jsonObject.get( "func" ) + " = " + PropertyUtils.getProperty( bean, "func" ) ); List expected = JSONArray.toList( jsonObject.getJSONArray( "array" ) ); System.out.println("\t " + expected + " = " + (List) PropertyUtils.getProperty( bean, "array" ) ); json = "{bool:true,integer:1,string:\"json\"}"; jsonObject = JSONObject.fromObject( json ); MyBean myBean = (MyBean) JSONObject.toBean( jsonObject, MyBean.class ); System.out.print("***7*** = " + jsonObject.get( "bool" ) + " = " + Boolean.valueOf( myBean.isBool() ) ); System.out.print("\t " + jsonObject.get( "integer" ) + " = " +new Integer( myBean.getInteger() ) ); System.out.println("\t " + jsonObject.get( "string" )+ " = " + myBean.getString() ); //需要用到ezmorph json = "{'data':[{'name':'clarance','userId':100001},{'name':'peng','userId':100002}]}"; Map<string>&gt; classMap = new HashMap<string>&gt;(); classMap.put( "data", Person.class ); myBean = (MyBean)JSONObject.toBean(JSONObject.fromObject(json), MyBean.class, classMap); if(myBean != null &amp;&amp; myBean.getData() != null) { for(Person p : myBean.getData()) { System.out.println("***8*** = " + "用户id: " + p.getUserId() + " 用户名: " + p.getName()); } } /* Morpher dynaMorpher = new BeanMorpher( Person.class, JSONUtils.getMorpherRegistry() ); MorpherRegistry morpherRegistry = new MorpherRegistry(); morpherRegistry.registerMorpher( dynaMorpher ); List output = new ArrayList(); for( Iterator i = myBean.getData().iterator(); i.hasNext(); ){ output.add( morpherRegistry.morph( Person.class, i.next() ) ); } myBean.setData( output ); */ /** * XML和JSON之间的转换,需要用到xom */ jsonObject = new JSONObject( true ); XMLSerializer xmls = new XMLSerializer(); String xml = xmls.write( jsonObject ); System.out.println("***9*** = " + xml); jsonObject = JSONObject.fromObject("{\"name\":\"json\",\"bool\":true,\"int\":1}"); xmls = new XMLSerializer(); xml = xmls.write( jsonObject ); System.out.println("***10*** = " + xml); jsonArray = JSONArray.fromObject("[1,2,3]"); xmls = new XMLSerializer(); xml = xmls.write( jsonArray ); System.out.println("***11*** = " + xml); xml = "<a class='\"array\"'><e type='\"function\"' params='\"i,j\"'>return matrix[i][j];</e></a> "; xmls = new XMLSerializer(); jsonArray = (JSONArray) xmls.read( xml); System.out.println("***12*** = " + jsonArray ); } } package com.gomt.json.jsonlib; import java.util.List; import net.sf.json.JSONFunction; public class MyBean implements java.io.Serializable { private static final long serialVersionUID = -784610042144660631L; private String name = "json"; private int pojoId = 1; private char[] options = new char[]{'a','f'}; private String func1 = "function(i){ return this.options[i]; }"; private JSONFunction func2 = new JSONFunction(new String[]{"i"},"return this.options[i];"); private Integer integer; private Boolean bool; private String string; private List<person> data; public Boolean isBool() { return bool; } public void setBool(Boolean bool) { this.bool = bool; } public String getString() { return string; } public void setString(String string) { this.string = string; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getPojoId() { return pojoId; } public void setPojoId(int pojoId) { this.pojoId = pojoId; } public char[] getOptions() { return options; } public void setOptions(char[] options) { this.options = options; } public String getFunc1() { return func1; } public void setFunc1(String func1) { this.func1 = func1; } public JSONFunction getFunc2() { return func2; } public void setFunc2(JSONFunction func2) { this.func2 = func2; } public Integer getInteger() { return integer; } public void setInteger(Integer integer) { this.integer = integer; } public Boolean getBool() { return bool; } public List<person> getData() { return data; } public void setData(List<person> data) { this.data = data; } } package com.gomt.json.jsonlib; import java.io.Serializable; public class Person implements Serializable { private static final long serialVersionUID = 7699163849016962711L; private int userId; private String name; public int getUserId() { return userId; } public void setUserId(int userId) { this.userId = userId; } public String getName() { return name; } public void setName(String name) { this.name = name; } } d.) 运行结果 ***1*** = [true,false,true] ***2*** = ["first","second"] ***3*** = ["json","is","easy"] ***4*** = {"func":function(i){ return this.arr[i]; },"arr":["a","b"],"int":1,"name":"json","bool":true} ***5*** = {"string":"","integer":0,"func1":function(i){ return this.options[i]; },"data":[],"pojoId":1,"name":"json","bool":false,"options":["a","f"],"func2":function(i){ return this.options[i]; }} ***6*** = json json true = true 1 = 1 2.2 = 2.2 function(a){ return a; } = function(a){ return a; } [1, 2] = [1, 2] ***7*** = true = true 1 = 1 json = json ***8*** = 用户id: 100001 用户名: clarance ***8*** = 用户id: 100002 用户名: peng ***9*** = <?xml version="1.0" encoding="UTF-8"?><o null="true"></o> ***10*** = <?xml version="1.0" encoding="UTF-8"?><o><bool type="boolean">true</bool><int type="number">1</int><name type="string">json</name></o> ***11*** = <?xml version="1.0" encoding="UTF-8"?><a><e type="number">1</e><e type="number">2</e><e type="number">3</e></a> 2007-12-7 9:08:29 net.sf.json.xml.XMLSerializer getType 信息: Using default type string ***12*** = [function(i,j){ return matrix[i][j]; }] </person></person></person></string></string></string></string></string></string>
分享到:
评论

相关推荐

    json paser 属于idea插件 用于解析json

    json paser 属于idea插件 用于解析json json paser 属于idea插件 用于解析json json paser 属于idea插件 用于解析json json paser 属于idea插件 用于解析json json paser 属于idea插件 用于解析json json paser 属于...

    最好用的c++json库 nlohmann json源代码

    最好用的c++json库 nlohmann json源代码最好用的c++json库 nlohmann json源代码最好用的c++json库 nlohmann json源代码最好用的c++json库 nlohmann json源代码最好用的c++json库 nlohmann json源代码最好用的c++json...

    MFC使用json11解析JSON

    json11::Json jsonObject = json11::Json::parse(jsonString); if (jsonObject.is_object()) { // 处理解析成功的对象 } else { // 处理解析错误 } ``` 一旦你有了JSON对象,可以访问其成员或进行修改。例如,...

    json3.js 【JS / JavaScript 中解析JSON的js包,JSON官方的JSON解析包】

    json3.js 【JS / JavaScript 中解析JSON的js包,JSON官方的JSON解析包】。JavaScript中解析JSON的js包,页面中引入json3.js,即可使用。 使用方法:JSON.parse(str), JSON.stringify(obj) 更多详情请参考博文: ...

    java json api,json api

    Java JSON API是Java平台上的库,提供了处理JSON的能力,包括解析JSON字符串、生成JSON对象以及进行JSON与Java对象之间的转换。 在Java中,有多种实现JSON API的库,如Jackson、Gson、org.json和json-lib等。本篇...

    json转换jsonschema

    而JSON Schema则是一个JSON格式的规范,用于定义JSON数据的结构和限制,类似于XML Schema,它为JSON数据提供了验证规则,确保数据的准确性和一致性。 在JavaScript开发中,有时我们需要将JSON对象转换为JSON Schema...

    json-c 一个用于c语言的json解析库,很强大

    在这个例子中,我们首先使用`json_tokener_parse`解析JSON字符串,然后通过`json_object_get_string`和`json_object_get_int`获取JSON对象中的数据,最后使用`json_object_put`释放内存。这就是`json-c`库基本的使用...

    JSON net.sf.json jar包

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛用于Web服务和应用程序之间的数据传输。它易于人阅读和编写,同时也易于机器解析和生成。`net.sf.json`是开源项目Apache软件基金会下的一个...

    json net.sf.json

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛用于Web应用程序之间传输数据。它以文本形式存储和传递数据,易于人阅读和编写,同时也易于机器解析和生成。`net.sf.json`是开源Java库,它...

    json数据格式化(editplus 格式化 Json 工具 )

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛用于Web应用程序之间传递数据。它基于JavaScript的一个子集,具有易读易写的特点,同时也易于机器解析和生成。JSON格式通常由键值对组成,键...

    json数据展示插件,jsonview.js

    jsonview是chrome浏览器的一个插件,用来在浏览器中查看json数据。比如你在浏览器中可以查看从服务器端传回来的json数据,这些数据可能没有经过格式化的,也或者是经过了unicode编码,没有缩进,没有换行等等,造成...

    C# json格式解析,Json格式字符串与C#对象相互转换,类库+使用案例,注释详细

    C# json格式转换,Json格式字符串与C#对象相互转换,类库和测试demo 写了一个json与C#对象相互装换的类库,直接调用就行,有测试案例,代码注释非常详细 部分方法: /// 将Json字符串解析为C#中的对象 /// Json格式...

    JAVA-JSON工具转换类

    可能包含的方法有`toJson()`(将Java对象转换为JSON字符串)、`fromJson()`(将JSON字符串解析为Java对象)、`convertToMap()`(将JSON字符串转换为Map)以及`convertToList()`(将JSON字符串转换为List)等。...

    json for PHP4.0

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在PHP中,JSON常用于与前端交互,传输数据。PHP 4.0版本虽然相对较旧,但仍然可以处理JSON数据,只是...

    JSON文件查看器,用于json文件的查看

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛应用于Web服务与客户端之间的数据传输。它易于人阅读和编写,同时也易于机器解析和生成。JSON文件通常以.js或.json为扩展名,其数据结构主要...

    经典ASP读取JSON字符串/生成JSON对象,数组对象等。

    这篇关于“经典ASP读取JSON字符串/生成JSON对象,数组对象等”的知识将详细介绍如何在ASP环境中处理JSON数据。 1. **JSON对象与数组的结构**: JSON对象以大括号{}表示,键值对之间用逗号分隔。键必须是字符串,用...

    JsonSQL:用SQL语句解析JSON文件

    **JsonSQL: SQL语句解析JSON文件** 在大数据处理和Web应用中,JSON(JavaScript Object Notation)格式已经成为数据交换的常见格式。然而,对于习惯使用SQL查询关系型数据库的人来说,处理JSON数据可能会觉得不太...

    PB解析json,解析JSON案例,解析jsondemo

    标题中的“PB解析json,解析JSON案例,解析jsondemo”表明了本文主要关注的是PowerBuilder(简称PB)如何处理JSON数据。在现代软件开发中,JSON(JavaScript Object Notation)是一种广泛使用的轻量级数据交换格式,...

    HTML版JsonViewer

    JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式,它基于JavaScript的一个子集,易于人阅读和编写,同时也易于机器解析和生成。在Web开发中,JSON被广泛用于前后端数据传输,因为它简洁、直观且易于...

    Newtonsoft.Json.dll

    **Newtonsoft.Json.dll详解** `Newtonsoft.Json.dll`是一个由James Newton-King 开发的流行的JSON库,专门用于.NET框架的开发。它在Unity引擎中广泛使用,因为Unity支持C#编程,而`Newtonsoft.Json`库提供了强大的...

Global site tag (gtag.js) - Google Analytics