歡迎您光臨本站 註冊首頁

Java里如何應用Json格式數據

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0
JSON是一種很簡潔很重要的數據格式,通常用來交換傳輸數據,廣泛使用於JavaScript技術中,並逐漸在各種流行編程語言中火了起來.在Java中也有一個JSON的庫,用來重要作用就是Java對象與JSON、XML數據的相互轉換,有著重要的應用.
環境:JDK5 , json-lib-2.3-jdk15
所依賴的包: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
java中各種類型所對應的json格式:
1.數組或集合-->JSON串
public static void test1() {
System.out.println("------------數組或集合-->JSON串----------");
boolean[] boolArray = new boolean[]{true, false, true};
JSONArray jsonArray1 = JSONArray.fromObject(boolArray);
System.out.println(jsonArray1);
//輸出格式: [true,false,true]
List list = new ArrayList();
list.add("first");
list.add("second");
JSONArray jsonArray2 = JSONArray.fromObject(list);
System.out.println(jsonArray2);
//輸出格式: ["first","second"]
JSONArray jsonArray3 = JSONArray.fromObject("['json','is','easy']");
System.out.println(jsonArray3);
//輸出格式: ["json","is","easy"]
}
2.Object|Map-->JSON串
public static void test2() {
System.out.println("------------Object|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]; }");
JSONObject jsonObject1 = JSONObject.fromObject(map);
System.out.println(jsonObject1);
//輸出格式: {"func":function(i){ return this.arr[i]; },"arr":["a","b"],"int":1,"bool":true,"name":"json"}
JSONObject jsonObject2 = JSONObject.fromObject(new MyBean());
System.out.println(jsonObject2);
//輸出格式: {"func1":function(i){ return this.options[i]; },"func2":function(i){ return this.options[i]; },"name":"json","options":["a","f"],"pojoId":1}
}
public class MyBean {
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];");
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;
}
}
3.JSON串-->Object
public static void test3() {
System.out.println("------------JSON串-->Object----------");
String json1 = "{name="json",bool:true,int:1,double:2.2,func:function(a){ return a; },array:[1,2]}";
JSONObject jsonObject1 = JSONObject.fromObject(json1);
Object bean1 = JSONObject.toBean(jsonObject1);
System.out.println(bean1);
//net.sf.ezmorph.bean.MorphDynaBean@10dd1f7[
// {double=2.2, func=function(a){ return a; }, int=1, name=json, bool=true, array=[1, 2]}
//]
String json2 = "{bool:true,integer:1,string:"json"}";
JSONObject jsonObject2 = JSONObject.fromObject(json2);
BeanA bean2 = (BeanA) JSONObject.toBean(jsonObject2, BeanA.class);
System.out.println(bean2);
// BeanA{bool=true, integer=1, string='json'}
}
public class BeanA {
private boolean bool;
private Integer integer;
private String string;
public boolean isBool() {
return bool;
}
public void setBool(boolean bool) {
this.bool = bool;
}
public Integer getInteger() {
return integer;
}
public void setInteger(Integer integer) {
this.integer = integer;
}
public String getString() {
return string;
}
public void setString(String string) {
this.string = string;
}
@Override
public String toString() {
return "BeanA{"bool=" bool ", integer=" integer ", string='" string ''' "}";
}
}
4.JSON串-->XML
public static void test4() {
System.out.println("------------JSON串-->XML----------");
JSONObject json = new JSONObject(true);
String xml = new XMLSerializer().write(json);
System.out.println(xml);
JSONObject json1 = JSONObject.fromObject("{"name":"json","bool":true,"int":1}");
String xml1 = new XMLSerializer().write(json1);
System.out.println(xml1);
JSONArray json2 = JSONArray.fromObject("[1,2,3]");
String xml2 = new XMLSerializer().write(json2);
System.out.println(xml2);
}
5.XML-->JSON串


public static void test5() {
System.out.println("------------XML-->JSON串----------");
String xml = ""
"<a class="array">n"
" <e type="function" params="i,j">n"
" return matrix[i][j];n"
" </e>n"
"</a>";
JSONArray json = (JSONArray) new XMLSerializer().read(xml);
System.out.println(json);
}
特別注意:
1、所有的Bean都應該定義為public,否則會出現net.sf.json.JSONException: java.lang.NoSuchMethodException: Property '***' has no getter method的錯誤.
2、必須引入xom-1.1.jar包,否則拋出java.lang.NoClassDefFoundError: nu/xom/Serializer


[火星人 ] Java里如何應用Json格式數據已經有1256次圍觀

http://coctec.com/docs/java/show-post-59945.html