简单说明:
为了方便数据在客户端及服务器端的传输,有时候我们会用一些比较方便组织的数据类型,比如json、xml等传给客户端,客户端也可以重新组织数据传回服务器端。JSON和XML提供了一套比较方便的数据组织形式。。并且有很多现成的类库用于解析这些数据。。
本文是对net.sf.json使用后的总结。。目前官方开源的对json进行处理的项目很多,fastjson还有其它等等。。视自己处理问题的复杂程度考虑选择使用不同的依赖包。。
如果使用maven构建项目,需要对以下两个包进行依赖
- <dependency>
- <groupId>net.sf.json-lib</groupId>
- <artifactId>json-lib</artifactId>
- <version>2.2.3</version>
- </dependency>
- <dependency>
- <groupId>xom</groupId>
- <artifactId>xom</artifactId>
- <version>1.2.5</version>
- </dependency>
示例程序:
1.将JSON组装的实体数据类型转换为Java中对应的简单Bean对象(只包含简单的数据类型)
- /**
- * 将json格式封装的简单实体类型数据转换成简单类型的javabean
- * @return
- */
- private static Object JSON2SimpleBean() {
- String jsonStr = "{\"age\":23,\"id\":123,\"name\":\"tt_2009\"," +
- "\"province\":\"上海\",\"sex\":\"男\"}";
- JSONObject jsonBean = JSONObject.fromObject(jsonStr);
- return JSONObject.toBean(jsonBean, SimpleUser.class);
- }
2.将JSON组装的复杂数据转换成复杂的java数据实体(对象中包含其它复杂对象,如收货地址用List存储)
- /**
- * 将json格式封装的复杂实体数据转换成复杂类型的javabean
- * @return
- */
- private static Object JSON2ComplexBean() {
- String jsonStr = "{\"address\":[\"北京\",\"上海\",\"广州\"]," +
- "\"age\":23,\"id\":123,\"name\":\"tt_2009\",\"province\":\"上海\",\"sex\":\"男\"}";
- JSONObject jsonBean = JSONObject.fromObject(jsonStr);
- return JSONObject.toBean(jsonBean, ComplexUser.class);
- }
3.将Json数据转换成java中的List
- /**
- * 将json格式封装的列表数据转换成java的List数据
- * @return
- */
- private static Object JSON2List() {
- String jsonArray =
- "[{\"age\":23,\"id\":123,\"name\":\"tt_2009_0\",\"province\":\"上海\",\"sex\":\"男\"}," +
- "{\"age\":24,\"id\":123,\"name\":\"tt_2009_1\",\"province\":\"上海\",\"sex\":\"男\"}," +
- "{\"age\":32,\"id\":123,\"name\":\"tt_2009_9\",\"province\":\"上海\",\"sex\":\"男\"}]";
- return JSONArray.toList(JSONArray.fromObject(jsonArray), new SimpleUser(), new JsonConfig());
- }
4.将json数据转换成java中的Map。(注意key只能是字符串)
- /**
- * 将json格式封装的字符串数据转换成java中的Map数据
- * @return
- */
- private static Map<String, SimpleUser> JSON2Map() {
- Map<String, SimpleUser> map = new HashMap<String, SimpleUser>();
- String jsonMapStr =
- "{\"tt_2009_4\":{\"age\":27,\"id\":123,\"name\":\"tt_2009_4\",\"province\":\"上海\",\"sex\":\"男\"}," +
- "\"tt_2009_6\":{\"age\":29,\"id\":123,\"name\":\"tt_2009_6\",\"province\":\"上海\",\"sex\":\"男\"}," +
- "\"tt_2009_0\":{\"age\":23,\"id\":123,\"name\":\"tt_2009_0\",\"province\":\"上海\",\"sex\":\"男\"}}";
- JSONObject jsonMap = JSONObject.fromObject(jsonMapStr);
- Iterator<String> it = jsonMap.keys();
- while(it.hasNext()) {
- String key = (String) it.next();
- SimpleUser u = (SimpleUser) JSONObject.toBean(
- JSONObject.fromObject(jsonMap.get(key)),
- SimpleUser.class);
- map.put(key, u);
- }
- return map;
- }
附录代码:
(setter、getter等方法省略掉了)
- /**
- * 只包含基本数据类型的简单实体类
- * @author TT_2009
- */
- public class SimpleUser {
- private int id;
- private String name;
- private String sex;
- private int age;
- private String province;
- }
- /**
- * 包含复杂类型的实体类
- * @author TT_2009
- */
- public class ComplexUser extends SimpleUser {
- private List<String> address;
- public ComplexUser() {
- }
- public ComplexUser(int id, String name,
- String sex, int age, String province,
- List<String> address) {
- super(id, name, sex, age, province);
- this.address = address;
- }
- public List<String> getAddress() {
- return address;
- }
- public void setAddress(List<String> address) {
- this.address = address;
- }
- }