json list互相转换例子(采用jackson)

本文提供了一个Java类到JSON格式的转换方法,并演示了如何将Java集合转化为JSON数组,以及如何从JSON字符串反向解析回Java对象。同时展示了如何进行简单的Map到JSON的转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[url]http://blog.youkuaiyun.com/einarzhang/article/details/6182372[/url]

项目中需要用到json与java List之间的转换,在此写出来自己的方法,这里采用的是jackson。请先下载jackson相关包和apache cxf下的jettison-1.2.jar



由于没有过多的研究jackson,自己写的只是一个可行的方式。
package com.test;

public class TestPojo {
private String name;
private String sex;

public String getName() {
return name;
}

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

public String getSex() {
return sex;
}

public void setSex(String sex) {
this.sex = sex;
}

@Override
public String toString() {
return "TestPojo [name=" + name + ", sex=" + sex + "]";
}
}



package com.test;

import java.io.IOException;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.codehaus.jettison.json.JSONArray;
import org.codehaus.jettison.json.JSONException;

import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;

public class JSONTest {

/**
* @param args
*/
@SuppressWarnings("rawtypes")
public static void main(String[] args) {
ObjectMapper mapper = new ObjectMapper();
StringWriter sw = null;
JSONArray array = null;

List<TestPojo> list = new ArrayList<TestPojo>();
List<TestPojo> list2 = new ArrayList<TestPojo>();
try {
for (int i = 0; i < 10; i++) {
TestPojo pojo1 = new TestPojo();
pojo1.setName(i + "11");
pojo1.setSex(i + "22");
list.add(pojo1);
sw = new StringWriter();
//转换自定义类
mapper.writeValue(sw, pojo1);
System.out.println(sw.getBuffer().toString());
}

//转换List
sw = new StringWriter();
mapper.writeValue(sw, list);
System.out.println(sw.getBuffer().toString());

//从字符串得到包含数组, 再从数组的到元素, 并转换成自定义对象
array = new JSONArray(sw.toString());
for (int i = 0; i < array.length(); i++) {
TestPojo pojoReverse = mapper.readValue(array.getString(i),
TestPojo.class);
System.out.println(pojoReverse);
list2.add(pojoReverse);
}

System.out.println("list size = " + list.size());
System.out.println("list2 size = " + list2.size());

//转换Map
Map<String, Object> map = new HashMap<String, Object>();
map.put("key1", "pandy");
map.put("date", new Date());

sw = new StringWriter();
mapper.writeValue(sw, map);
System.out.println(sw.getBuffer().toString());

//从字符串得到Map对象
Map map1 = mapper.readValue(sw.getBuffer().toString(),HashMap.class);
System.out.println(map1.get("key1"));
System.out.println(map1.get("date"));

} catch (JsonParseException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

}



{"name":"011","sex":"022"}
{"name":"111","sex":"122"}
{"name":"211","sex":"222"}
{"name":"311","sex":"322"}
{"name":"411","sex":"422"}
{"name":"511","sex":"522"}
{"name":"611","sex":"622"}
{"name":"711","sex":"722"}
{"name":"811","sex":"822"}
{"name":"911","sex":"922"}
[{"name":"011","sex":"022"},{"name":"111","sex":"122"},{"name":"211","sex":"222"},{"name":"311","sex":"322"},{"name":"411","sex":"422"},{"name":"511","sex":"522"},{"name":"611","sex":"622"},{"name":"711","sex":"722"},{"name":"811","sex":"822"},{"name":"911","sex":"922"}]
TestPojo [name=011, sex=022]
TestPojo [name=111, sex=122]
TestPojo [name=211, sex=222]
TestPojo [name=311, sex=322]
TestPojo [name=411, sex=422]
TestPojo [name=511, sex=522]
TestPojo [name=611, sex=622]
TestPojo [name=711, sex=722]
TestPojo [name=811, sex=822]
TestPojo [name=911, sex=922]
list size = 10
list2 size = 10
{"key1":"pandy","date":1360249830221}
pandy
1360249830221
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值