您的位置:首页 > 编程语言 > Java开发

JSON字符串转换JAVA对象例子。

2013-05-17 22:59 351 查看
JsonTest:
package com.demo.json;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

import org.json.simple.JSONValue;

public class JsonTest
{
public static void main(String[] args)
{
// -----------------------------------------------------------------------------
// Object 2 JSON
List<Peoper> peopers = new ArrayList<Peoper>();
Peoper p1 = new Peoper("001", "Taki", "中国");
Peoper p2 = new Peoper("002", "DSM", "China");
peopers.add(p1);
peopers.add(p2);
String result = JsonTool.getJsonString("Peopers", peopers);
System.out.println("JSON: " + result);

// 解析PHP json_encode 字符串
String jsonStr = "{\"Name\":\"\u5e0c\u4e9a\",\"Age\":20}";
Object obj = JSONValue.parse(jsonStr);
System.out.println(obj);
System.out.println();

// -----------------------------------------------------------------------------
// JSON 2 Object
String jsonString = "["
+ "{\"author\":\"7\",\"id\":358,\"title\":\"Japan\",\"pictures\":[{\"description\":\"001\",\"imgPath\":\"/cms/u/cms/www/201203/05150720ii68.jpg\"},{\"description\":\"002\",\"imgPath\":\"/cms/u/cms/www/201203/05150720ii67.jpg\"}],\"path\":\"ip\"},"
+ "{\"author\":\"8\",\"id\":359,\"title\":\"China\",\"pictures\":[{\"description\":\"101\",\"imgPath\":\"/cms/u/cms/www/201203/111111111111.jpg\"},{\"description\":\"102\",\"imgPath\":\"/cms/u/cms/www/201203/222222222222.jpg\"}],\"path\":\"ip\"}]";
JSONArray array = JSONArray.fromObject(jsonString);

// Content.class包含pictures.class,需要设置这个参数
Map<String, Class<pictures>> classMap = new HashMap<String, Class<pictures>>();
classMap.put("pictures", pictures.class);

Object[] objs = new Object[array.size()];
for (int i = 0; i < array.size(); i++)
{
JSONObject jsonObject = array.getJSONObject(i);
objs[i] = (Content) JSONObject.toBean(jsonObject, Content.class, classMap);
}
// 转换Content,循环输出所有content
for (int i = 0; i < objs.length; i++)
{
Content content = (Content) objs[i];
System.out.println("author:" + content.getAuthor() + " ID:"
+ content.getId() + " Title:" + content.getTitle() + " Path:" + content.getPath());

// 转换pictures,循环输出所有picture
List<pictures> pictures = content.getPictures();
for (int n = 0; n < pictures.size(); n++)
System.out.println("description:"
+ pictures.get(n).getDescription() + " imgPath:" + pictures.get(n).getImgPath());
}
}
}

JsonTool:

package com.demo.json;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import net.sf.json.JSONObject;

public class JsonTool
{
public static String getJsonString(Object key, Object value)
{
//System.out.println("key: " + key);
//System.out.println("value: " + value.toString());
JSONObject obj = new JSONObject();
obj.put(key, value);	//添加物件
return obj.toString();	//转换为字符串并返回
}

//解析PHP json_encode 字符串
public static String unescapeUnicode(String str)
{
StringBuffer b=new StringBuffer();
Matcher m = Pattern.compile("\\\\u([0-9a-fA-F]{4})").matcher(str);
while(m.find())
{
b.append((char)Integer.parseInt(m.group(1),16));
}
return b.toString();
}
}

People:

package com.demo.json;

public class People
{
public People()
{
}

public People(String id, String name, String address)
{
this.id = id;
this.name = name;
this.address = address;
}

private String id;
private String name;
private String address;

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getAddress() {
return address;
}

public void setAddress(String address) {
this.address = address;
}

public String toString()
{
return "ID:" + this.id + " Name:" + this.name + " Address:" + this.address;
}
}

Content:

package com.demo.json;

import java.util.List;

public class Content {

private String author;
private String id;
private String title;
private List<pictures> pictures;
private String path;

public String getAuthor() {
return author;
}

public void setAuthor(String author) {
this.author = author;
}

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public String getTitle() {
return title;
}

public void setTitle(String title) {
this.title = title;
}

public List<pictures> getPictures() {
return pictures;
}

public void setPictures(List<pictures> pictures) {
this.pictures = pictures;
}

public String getPath() {
return path;
}

public void setPath(String path) {
this.path = path;
}
}

pictures:

package com.demo.json;

public class pictures {
private String description;
private String imgPath;

public String getDescription() {
return description;
}

public void setDescription(String description) {
this.description = description;
}

public String getImgPath() {
return imgPath;
}

public void setImgPath(String imgPath) {
this.imgPath = imgPath;
}
}

控制台运行结果:

JSON: {"Peopers":[{"address":"中国","id":"001","name":"Taki"},{"address":"Japan","id":"002","name":"DSM"}]}
{"Name":"中文内容","Age":20}

author:7 ID:358 Title:Japan Path:ip
description:001 imgPath:/cms/u/cms/www/201203/05150720ii68.jpg
description:002 imgPath:/cms/u/cms/www/201203/05150720ii67.jpg
author:8 ID:359 Title:China Path:ip
description:101 imgPath:/cms/u/cms/www/201203/111111111111.jpg
description:102 imgPath:/cms/u/cms/www/201203/222222222222.jpg
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: