Json 解析详解

发布时间:   来源:文档文库   
字号:
Json-lib构造和解析Json数据
一、介绍
JSON-lib包是一个beans,collections,maps,javaarraysXMLJSON互相转换的包,主要就是用来解析Json数据,在其官网http://www.json.org/有详细讲解,有兴趣的可以去研究。二、下载jar依赖包三、基本方法介绍
1.List集合转换成json方法
Listlist=newArrayList(;list.add("first";list.add("second";
JSONArrayjsonArray2=JSONArray.fromObject(list;
2.Map集合转换成json方法
Mapmap=newHashMap(;map.put("name","json";
map.put("bool",Boolean.TRUE;map.put("int",newInteger(1;
map.put("arr",newString[]{"a","b"};
map.put("func","function(i{returnthis.arr[i];}";JSONObjectjson=JSONObject.fromObject(map;
3.Bean转换成json代码
JSONObjectjsonObject=JSONObject.fromObject(newJsonBean(;
4.数组转换成json代码
boolean[]boolArray=newboolean[]{true,false,true};JSONArrayjsonArray1=JSONArray.fromObject(boolArray;
5.一般数据转换成json代码
JSONArrayjsonArray3=JSONArray.fromObject("['json','is','easy']";
6.beans转换成json代码
Listlist=newArrayList(;JsonBean2jb1=newJsonBean2(;jb1.setCol(1;jb1.setRow(1;
jb1.setValue("xx";
JsonBean2jb2=newJsonBean2(;jb2.setCol(2;jb2.setRow(2;jb2.setValue("";
list.add(jb1;list.add(jb2;

JSONArrayja=JSONArray.fromObject(list;

四、演示示例
这里以基本的几个常用方法进行测试
packagecom.json;
importjava.util.ArrayList;importjava.util.HashMap;importjava.util.List;importjava.util.Map;
importnet.sf.json.JSONArray;importnet.sf.json.JSONObject;/**
*使用json-lib构造和解析Json数据*
*@authorAlexia*@date2013/5/23**/
publicclassJsonTest{/**
*构造Json数据*
*@return*/
publicstaticStringBuildJson({
//JSON格式数据解析对象
JSONObjectjo=newJSONObject(;
//下面构造两个map、一个list和一个Employee对象
Mapmap1=newHashMap(;map1.put("name","Alexia";map1.put("sex","female";map1.put("age","23";
Mapmap2=newHashMap(;map2.put("name","Edward";map2.put("sex","male";map2.put("age","24";

Listlist=newArrayList(;list.add(map1;list.add(map2;
Employeeemployee=newEmployee(;employee.setName("wjl";employee.setSex("female";employee.setAge(24;
//Map转换为JSONArray数据
JSONArrayja1=JSONArray.fromObject(map1;//List转换为JSONArray数据
JSONArrayja2=JSONArray.fromObject(list;//Bean转换为JSONArray数据
JSONArrayja3=JSONArray.fromObject(employee;
System.out.println("JSONArray对象数据格式:";System.out.println(ja1.toString(;System.out.println(ja2.toString(;System.out.println(ja3.toString(;
//构造Json数据,包括一个map和一个Employee对象jo.put("map",ja1;
jo.put("employee",ja2;
System.out.println("\n最终构造的JSON数据格式:";System.out.println(jo.toString(;
returnjo.toString(;
}/**
*解析Json数据*
*@paramjsonStringJson数据字符串*/
publicstaticvoidParseJson(StringjsonString{
//employee为例解析,map类似
JSONObjectjb=JSONObject.fromObject(jsonString;JSONArrayja=jb.getJSONArray("employee";
ListempList=newArrayList(;

//循环添加Employee对象(可能有多个)for(inti=0;i
Employeeemployee=newEmployee(;
employee.setName(ja.getJSONObject(i.getString("name";employee.setSex(ja.getJSONObject(i.getString("sex";employee.setAge(ja.getJSONObject(i.getInt("age";
empList.add(employee;}
System.out.println("\nJson数据转换为Employee对象:";for(inti=0;iEmployeeemp=empList.get(i;
System.out.println("name:"+emp.getName(+"sex:"
+emp.getSex(+"age:"+emp.getAge(;}
}/**
*@paramargs*/
publicstaticvoidmain(String[]args{//TODOAuto-generatedmethodstub
ParseJson(BuildJson(;}}

org.json构造和解析Json数据的方法

一、介绍
org.json包是另一个用来beans,collections,maps,javaarraysXMLJSON互相转换的包,主要就是用来解析Json数据,在其官网http://www.json.org/有详细讲解,有兴趣的可以去研究。二、下载jar依赖包三、基本方法介绍
由于org.json不能直接与bean进行转换,需要通过map进行中转,为了方便,我这里写了一个工具类JsonHelper,用于JsonMapBean的相互转换
packagecom.json;

importjava.lang.reflect.Method;importjava.text.ParseException;importjava.util.HashMap;importjava.util.Iterator;importjava.util.Map;
importorg.json.JSONException;importorg.json.JSONObject;/***
*1:JavaBean转换成MapJSONObject*2:Map转换成Javabean
*3:JSONObject转换成MapJavabean*
*@authorAlexia*/
publicclassJsonHelper{/**
*Javabean转换为Map*
*@paramjavaBean
*javaBean*@returnMap对象*/
publicstaticMaptoMap(ObjectjavaBean{
Mapresult=newHashMap(;
Method[]methods=javaBean.getClass(.getDeclaredMethods(;
for(Methodmethod:methods{
try{
if(method.getName(.startsWith("get"{
Stringfield=method.getName(;field=field.substring(field.indexOf("get"+3;
field=field.toLowerCase(.charAt(0+field.substring(1;
Objectvalue=method.invoke(javaBean,(Object[]null;

result.put(field,null==value?"":value.toString(;
}
}catch(Exceptione{e.printStackTrace(;}
}
returnresult;
}/**
*Json对象转换成Map*
*@paramjsonObject*json对象*@returnMap对象
*@throwsJSONException*/
publicstaticMaptoMap(StringjsonStringthrowsJSONException{
JSONObjectjsonObject=newJSONObject(jsonString;
Mapresult=newHashMap(;
Iteratoriterator=jsonObject.keys(;Stringkey=null;Stringvalue=null;
while(iterator.hasNext({
key=(Stringiterator.next(;value=jsonObject.getString(key;result.put(key,value;
}
returnresult;
}/**
*JavaBean转换成JSONObject(通过Map中转)

*
*@parambean
*javaBean*@returnjson对象*/
publicstaticJSONObjecttoJSON(Objectbean{
returnnewJSONObject(toMap(bean;
}/**
*Map转换成Javabean*
*@paramjavabean
*javaBean*@paramdata
*Map数据*/
publicstaticObjecttoJavaBean(Objectjavabean,Mapdata{
Method[]methods=javabean.getClass(.getDeclaredMethods(;for(Methodmethod:methods{
try{
if(method.getName(.startsWith("set"{
Stringfield=method.getName(;field=field.substring(field.indexOf("set"+3;
field=field.toLowerCase(.charAt(0+field.substring(1;method.invoke(javabean,newObject[]{
data.get(field
};
}
}catch(Exceptione{}
}
returnjavabean;

}/**
*JSONObjectJavaBean*
*@parambean
*javaBean*@returnjson对象
*@throwsParseException*json解析异常*@throwsJSONException*/
publicstaticvoidtoJavaBean(Objectjavabean,StringjsonStringthrowsParseException,JSONException{
JSONObjectjsonObject=newJSONObject(jsonString;
Mapmap=toMap(jsonObject.toString(;
toJavaBean(javabean,map;
}}

四、演示示例
packagecom.json;
importjava.text.ParseException;importjava.util.ArrayList;importjava.util.HashMap;importjava.util.List;importjava.util.Map;
importorg.json.JSONArray;importorg.json.JSONException;importorg.json.JSONObject;/**
*使用json-lib构造和解析Json数据*
*@authorAlexia*@date2013/5/23*

*/
publicclassOrgJsonTest{/**
*构造Json数据*
*@return
*@throwsJSONException*/
publicstaticStringBuildJson(throwsJSONException{
//JSON格式数据解析对象
JSONObjectjo=newJSONObject(;
//下面构造两个map、一个list和一个Employee对象
Mapmap1=newHashMap(;map1.put("name","Alexia";map1.put("sex","female";map1.put("age","23";
Mapmap2=newHashMap(;map2.put("name","Edward";map2.put("sex","male";map2.put("age","24";
Listlist=newArrayList(;list.add(map1;list.add(map2;
Employeeemployee=newEmployee(;employee.setName("wjl";employee.setSex("female";employee.setAge(24;
//Map转换为JSONArray数据JSONArrayja=newJSONArray(;ja.put(map1;
System.out.println("JSONArray对象数据格式:";System.out.println(ja.toString(;
//Javabean转换为Json数据(需要Map中转)JSONObjectjo1=JsonHelper.toJSON(employee;

System.out.println("\n仅含Employee对象的Json数据格式:";System.out.println(jo1.toString(;
//构造Json数据,包括一个map和一个含Employee对象的Json数据jo.put("map",ja;
jo.put("employee",jo1.toString(;
System.out.println("\n最终构造的JSON数据格式:";System.out.println(jo.toString(;
returnjo.toString(;
}/**
*解析Json数据*
*@paramjsonString
*Json数据字符串*@throwsJSONException*@throwsParseException*/
publicstaticvoidParseJson(StringjsonStringthrowsJSONException,ParseException{
JSONObjectjo=newJSONObject(jsonString;JSONArrayja=jo.getJSONArray("map";
System.out.println("\nJson数据解析为Map";
System.out.println("name:"+ja.getJSONObject(0.getString("name"+"sex:"+ja.getJSONObject(0.getString("sex"+"age:"
+ja.getJSONObject(0.getInt("age";
StringjsonStr=jo.getString("employee";Employeeemp=newEmployee(;JsonHelper.toJavaBean(emp,jsonStr;
System.out.println("\nJson数据解析为Employee对象:";
System.out.println("name:"+emp.getName(+"sex:"+emp.getSex(+"age:"+emp.getAge(;
}/**

*@paramargs
*@throwsJSONException*@throwsParseException*/
publicstaticvoidmain(String[]argsthrowsJSONException,ParseException{
//TODOAuto-generatedmethodstub
ParseJson(BuildJson(;}}


本文来源:https://www.2haoxitong.net/k/doc/65cd6c24fab069dc51220184.html

《Json 解析详解.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式