一。JSON多数组、多对象解析
jsp文件 页面发送json字符串
var people = { "programmers": [{ "firstName": "Elliotte", "lastName":"Harold","email": "elharo@macfaq.com" }],"authors": [{ "firstName": "Isaac", "lastName": "Asimov", "genre": "science fiction" }],
"musicians": [{ "firstName": "Eric", "lastName": "Clapton", "instrument": "guitar" },
{ "firstName": "Sergei", "lastName": "Rachmaninoff", "instrument": "piano" }]
};
// var obj = eval('(' + str + ')');
createXMLHttpRequest()
var url = "parseJson.do?people=" + people.toJSONString();
XMLHttpReq.open("get",url,true);
// XMLHttpReq.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
XMLHttpReq.onreadystatechange=processResponse;
XMLHttpReq.send(null);
java 文件类方法 解析json字符串
public void jxJSON(HttpServletRequest request, HttpServletResponse response) throws Exception {
// TODO 自动生成方法存根
String jsonString = request.getParameter("people");
JSONObject jb = JSONObject.fromObject(jsonString);
JSONArray array=jsonObj.getJSONArray("programmers");
System.out.println("array:"+array.get(0));
JSONObject obj=jsonObj.getJSONObject("singer");
System.out.println("obj:"+obj.get("firstName"));
return null;
}
二。。JSON解析成java对象
JSON直接转化成对象,先创建一个简单的java值对象,代码示例为:
public class formBean {
private String username;
private String password;
private String sex;
private String[] love;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String[] getLove() {
return love;
}
public void setLove(String[] love) {
this.love = love;
}
}
有了JSON文本和需要绑定的java值对象后,那么我们下一步就是要编写另一个jsp页面convertJava.jsp(当然,你也可以使用servlet),用来把这段文本转换成java对象了。
另一页面,如: 代码片段如下:
request.setCharacterEncoding("GBK");
String jsobject = request.getParameter("str");// 这个是jsp页面传过来的对象字符串
JSONObject js = JSONObject.fromObject(jsobject);// 根据字符串转换对象
formBean bean = (formBean) js.toBean(js, formBean.class); // 把值绑定成相应的值对象
// 下面输出bean的值
response.setCharacterEncoding("GBK");
response.setContentType("text/html;charset=gbk");
out.println(bean.getUsername());
out.println(bean.getPassword());
out.println(bean.getSex());
out.println("bean的love属性为一个数组:");
for (String s : bean.getLove()) {
out.println("bean的数组元素:" + s );
}
通过上面的代码片段,可以了解到JSONObject有用的方法是fromObject(JSON文本)[用于讲JSON文本创建一个JSONObject实例]和toBean(带有JSON文本的JSONObject对象,你要绑定的java值对象类型.class)[用于把JSON文本转换成java对象]
至此,你就可以利用这个简单的java值对象了,不再用request的getParameter方法一一获取参数值,然后再使用java值对象的setter方法一一设置属性值这么麻烦了。