`
leign
  • 浏览: 166756 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JSON学习笔记

阅读更多
最近写一个搜索方面的代码,需要用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();
}

当然也可以自己手动去解析转换,有兴趣可以自己试试.
0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics