最近写一个搜索方面的代码,需要用JS异步请求以JSON格式与服务器传输数据,于是开始了JSON和Rest的学习。
intro
JSON(Javascript Object Notation)是一种轻量级的数据交换语言,以文字为基础,且易于让人阅读。尽管JSON是在Javascript的一个子集,但JSON是独立于语言的文本格式,并且采用了类似于C语言家族的一些习惯---百科
JSON用于描述数据结构,有两种基本形式存在
名称/值对(collection):名称和值之间使用“:”隔开,每个名称/值对之间使用“,”分割,并且使用“{”“}”括起来;一般的形式是:
{name:value}
这样的数据描述在不同的语言中会被解释成不同的形式,可能是对象,结构体,哈希表等。
值的有序列表(Array):一个或者多个值用“,”分割后,使用“[”,“]”括起来就形成了这样的列表,形如:
[collection, collection]
在很多语言中它被解释为数组。
understanding
个人认为JSON是继XML后更为简洁、更具有可读性的数据格式。
JSON的规格非常简单,只用一个页面、几百个字就能说清楚,而且Douglas Crockford声称这个规格永远不必升级,因为该规定的都规定了。
1) 并列的数据之间用逗号(“,”)分隔。
2) 映射用冒号(“:”)表示。
3) 并列数据的集合(数组)用方括号("[]")表示。
4) 映射的集合(对象)用大括号(“{}”)表示。
practice
下面是JSON与JAVA中一些对象的转换例子
需要用到的JAR包
commons-httpclient-3.1.jar
commons-lang-2.4.jar
commons-logging-1.1.1.jar
json-lib-2.2.3-jdk15.jar(目前最高版本)
ezmorph-1.0.6.jar
commons-collections-3.2.1.jar
commons-beanutils-core-1.7.0.jar
所有包见附件
List list = new ArrayList();
list.add("djl");
list.add(999);
JSONArray jArray = JSONArray.fromObject(list);
jArray.add("newElement");
System.out.println("jArray===="+jArray);
Map map = new HashMap();
map.put("name", "leign");
map.put("year", 2009);
JSONObject jsonObject = JSONObject.fromObject(map);
jsonObject.put("key", "value");
System.out.println("jsonObject===="+jsonObject);
String jsonStr = "['leign','is','a','boy']";
JSONArray jArrayFromStr = JSONArray.fromObject(jsonStr);
System.out.println("jArrayFromStr===="+jArrayFromStr);
String jsonObjectStr = "{name=\"leign\",year:2009,word:\"hello\"}";
JSONObject jsonObjFromStr = JSONObject.fromObject(jsonObjectStr);
Object bean = JSONObject.toBean(jsonObjFromStr);
System.out.println("bean===="+bean);
System.out.println("name====="+jsonObjFromStr.get("name"));
JSON与XML的转换
可利用net.sf.json.xml.XMLSerializer所带的write()、read()等解决
public static String JsonToXml(String jsonStr)
{
String xmlStr = null;
if(jsonStr!=null){
JSON json = JSONObject.fromObject(jsonStr);
xmlStr = XMLSerializer.write(json);
}
return xmlStr;
}
public static String XmlToJson(String xml)
{
JSON json = null;
if(xml!=null){
json = XMLSerializer.read(xml);
}
return json.toString();
}
当然也可以自己手动去解析转换,有兴趣可以自己试试.
分享到:
相关推荐
Json学习笔记,你的必选哦,与大家共享,一起进步
JavaScript数组对象JSON学习笔记,推荐
json学习笔记、jackson的jar包、核心代码段。
Ajax,Json的学习笔记
WCF,json
本人学习 json总结希望 可以 给各位朋友 点 帮助
介绍了json的三个工具struts json,json_lib, jackson-mapper 的使用方法和一些常见错误处理
NULL 博文链接:https://rogerfederer.iteye.com/blog/783714
json-lib 学习笔记 json-lib json
JSON我就要来了
Ajax&Json笔记,非常适合新手入门学习
JS基础学习笔记-JSON
NULL 博文链接:https://xuxiheng.iteye.com/blog/2233774
extJs 2.1学习笔记 此资料收集于网上.. 1. ExtJs 结构树 2 2. 对ExtJs的态度 3 3. Ext.form概述 4 4. Ext.TabPanel篇 5 5. Function扩展篇 7 6. Ext.data.Store篇 10 7. Ext.data.JsonReader篇一 12 8. Ext.data....
通过Ajax获取JSON数据以我之前写的与用户交互的动态清单列表为例,现在把模型中的数据单独写成一个JSON文件,再通过发起Ajax请求的方式获取JSON数据。这样,清单列表中的数据项就都是通过JSON数据来获取的了。
ExtJs学习笔记,共30讲 1. ExtJs 结构树 2 2. 对ExtJs的态度 3 3. Ext.form概述 4 4. Ext.TabPanel篇 5 5. Function扩展篇 7 6. Ext.data.Store篇 10 7. Ext.data.JsonReader篇一 12 8. Ext.data.JsonReader篇二 15 ...