JSON 之JAVA 解析

缘来如此 2014-03-31

一、JSON(JavaScriptObjectNotation)一种简单的数据格式,比xml更轻巧。

Json建构于两种结构:

1、“名称/值”对的集合(Acollectionofname/valuepairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hashtable),有键列表(keyedlist),或者关联数组(associativearray)。如:

{

“name”:”jackson”,

“age”:100

}

2、值的有序列表(Anorderedlistofvalues)。在大部分语言中,它被理解为数组(array)如:

{

“students”:

[

{“name”:”jackson”,“age”:100},

{“name”:”michael”,”age”:51}

]

}

二、java解析JSON步骤

A、服务器端将数据转换成json字符串

首先、服务器端项目要导入json的jar包和json所依赖的jar包至builtPath路径下(这些可以到JSON-lib官网下载:http://json-lib.sourceforge.net/)

JSON之JAVA解析

然后将数据转为json字符串,核心函数是:

publicstaticStringcreateJsonString(Stringkey,Objectvalue)

{

JSONObjectjsonObject=newJSONObject();

jsonObject.put(key,value);

returnjsonObject.toString();

}

B、客户端将json字符串转换为相应的javaBean

1、客户端获取json字符串(因为android项目中已经集成了json的jar包所以这里无需导入)

publicclassHttpUtil

{

publicstaticStringgetJsonContent(StringurlStr)

{

try

{//获取HttpURLConnection连接对象

URLurl=newURL(urlStr);

HttpURLConnectionhttpConn=(HttpURLConnection)url

.openConnection();

//设置连接属性

httpConn.setConnectTimeout(3000);

httpConn.setDoInput(true);

httpConn.setRequestMethod("GET");

//获取相应码

intrespCode=httpConn.getResponseCode();

if(respCode==200)

{

returnConvertStream2Json(httpConn.getInputStream());

}

}

catch(MalformedURLExceptione)

{

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

catch(IOExceptione)

{

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

return"";

}

privatestaticStringConvertStream2Json(InputStreaminputStream)

{

StringjsonStr="";

//ByteArrayOutputStream相当于内存输出流

ByteArrayOutputStreamout=newByteArrayOutputStream();

byte[]buffer=newbyte[1024];

intlen=0;

//将输入流转移到内存输出流中

try

{

while((len=inputStream.read(buffer,0,buffer.length))!=-1)

{

out.write(buffer,0,len);

}

//将内存流转换为字符串

jsonStr=newString(out.toByteArray());

}

catch(IOExceptione)

{

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

returnjsonStr;

}

}

2、获取javaBean

publicstaticPersongetPerson(StringjsonStr)

{

Personperson=newPerson();

try

{//将json字符串转换为json对象

JSONObjectjsonObj=newJSONObject(jsonStr);

//得到指定jsonkey对象的value对象

JSONObjectpersonObj=jsonObj.getJSONObject("person");

//获取之对象的所有属性

person.setId(personObj.getInt("id"));

person.setName(personObj.getString("name"));

person.setAddress(personObj.getString("address"));

}

catch(JSONExceptione)

{

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

returnperson;

}

publicstaticListgetPersons(StringjsonStr)

{

Listlist=newArrayList();

JSONObjectjsonObj;

try

{//将json字符串转换为json对象

jsonObj=newJSONObject(jsonStr);

//得到指定jsonkey对象的value对象

JSONArraypersonList=jsonObj.getJSONArray("persons");

//遍历jsonArray

for(inti=0;i

相关推荐

大树 / 0评论 2011-09-29