JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。
关于JSON格式和用法的具体介绍请看度娘百科:http://baike.baidu.com/view/136475.htm,这里仅介绍几个简单的java生成Json的基础用法
在Java中使用JSON类型之前,需要给project添加几个jar包:
json-lib-2.2-jdk15.jar
commons-logging-1.1.1.jar
commons-collections-3.2.1.jar
commons-beanutils.jar
ezmorph-1.0.5.jar
commons-lang.jar
以上的是最基础的几个包,如果需要JSON的全面功能,还需要添加:
commons-beanutils-core-1.8.0.jar
commons-httpclient.jar
morph-1.1.1.jar
这些包的添加视情况而定
我把这些包打了7z上传并分享下载地址:
Java代码中生成Json类型的基本用法如下:
------------------------------------------------------------------
HashMap生成JSONObject:
Map map = new HashMap();
map.put(XXXX,YYYY);
JSONObject json = JSONObject.fromObject(map);
这里注意HashMap是无序的,也就是说里面的元素没有排列顺序,所以生成的JsonObject用print打出来的使用“{ XXXX:YYYY }”形式
------------------------------------------------------------------
ArrayList生成JSONArray:
List list = new ArrayList();
list.add(XXXX);
JSONArray json = JSONArray.fromObject(list);
ArrayList是有序的,所以生成的JsonArray用print打出来的使用“[ XXXX ]”形式
------------------------------------------------------------------
数组String[]生成JSONArray:
String[] strings = {"1", "2", "3"};
JSONArray ja1 = JSONArray.fromObject(strings);
数组String[]是有序的,所以生成的JsonArray用print打出来["1","2","3"]
String可以换为任意的Object
------------------------------------------------------------------
String字符串生成JSONArray:
JSONArray ja = JSONArray.fromObject("['1','2','3']");
结果跟上一个是一样的
------------------------------------------------------------------
自定义结构体型实例转生成JSONObject并解析成该类型:
定义一个类MyStruct:
public class MyStruct {
public String name;
public int number;
public String[] attribute;
.............
public String getName() ;
public int getNumber();
public String[] getAttribute();
//注意,这里必须有各变量的getter方法,json会从类中的getter方法取值然后加入json实例的数据中,如果没有,这生成的json为{ }
//可以用eclipse的source中的功能自动生成getter和setter方法
}
........
MyStruct ms = new MyStruct();
ms.name = “zhang”;
ms.number = 332;
ms.attribute = {"male", "183cm"};
JSONObject json = JSONObject.fromObject(ms);
//打印出{"name":"zhang","number":332,"attribute":["male","183cm"]}
........
Object temp = JSONObject.toBean(json, MyStruct.class);
if(temp instanceof MyStruct) {
MyStruct ms2 = (MyStruct) temp;
//生成的ms2理论上应该与ms内容相同
}
------------------------------------------------------------------
Json还可以生成xml数据流:
MyStruct ms = new MyStruct();
ms.name = “zhang”;
ms.number = 332;
ms.attribute = {"male", "183cm"};
JSONObject json = JSONObject.fromObject(ms);
XMLSerializer xmlSerializer = new XMLSerializer();
String xml = xmlSerializer.write(json);
打印出:
<?xml version="1.0" encoding="UTF-8"?>
<o><attribute class="array"><e type="string">male</e><e type="string">183cm</e></attribute><name type="string">zhang</name><number type="number">332</number></o>
这里要用到xom-1.1.jar包,因为CSDN上已经有人发过了,我就不发了