注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

星期五

明天不上班

 
 
 

日志

 
 
关于我

一个特立独行的Java程序员,比较宅,上上网,写博客,听音乐,看电影。

网易考拉推荐

JSON数据转换  

2013-01-27 18:58:41|  分类: Java |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
关于JSON数据转换已经是很老的话题了,这里我们将又一次讨论JSON数据与Java对象的转换。
在http://www.json.org/上你可以发现一长串关于Java JSON的数据转换库:
org.json.
org.json.me.
Jackson JSON Processor.
Json-lib.
JSON Tools.
Stringtree.
SOJO.
Jettison.
json-taglib.
XStream.
Flexjson.
JON tools.
Argo.
jsonij.
fastjson.
mjson.
jjson.
json-simple.
json-io.
JsonMarshaller.
google-gson.
Json-smart.
FOSS Nova JSON.
这里先从最简单的org.json开始,如果是Maven项目,引入jar包非常容易,详情请参考: http://mvnrepository.com/artifact/org.json/json/20090211 当然你也可以在该站点上直接下载。

写一个简单的例子:关于JSON字符串转成Java最常见的List和Map的两个方法

package com.test.json;

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

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

public class JSONUtil {

public static List<Map<String, Object>> fromJSONStr2List(String jsonStr) throws JSONException {
JSONArray jsonArr = new JSONArray(jsonStr);
List<Map<String, Object>> list = new ArrayList<Map<String,Object>>();
for (int i=0; i<jsonArr.length(); i++) {
JSONObject json2 = jsonArr.getJSONObject(i);
list.add(fromJSONStr2Map(json2.toString()));
}
return list;
}

public static Map<String, Object> fromJSONStr2Map(String jsonStr) throws JSONException {
Map<String, Object> map = new HashMap<String, Object>();

JSONObject json = new JSONObject(jsonStr);
Iterator<String> it = json.keys();
while (it.hasNext()){
String key = it.next();
Object value = json.get(key);
if (value instanceof JSONArray) {
List<Map<String, Object>> list = new ArrayList<Map<String,Object>>();
JSONArray jsonArr2 = ((JSONArray)value);
for (int i=0; i<jsonArr2.length(); i++) {
JSONObject json2 = jsonArr2.getJSONObject(i);
list.add(fromJSONStr2Map(json2.toString()));
}
map.put(key.toString(), list);
} else {
map.put(key.toString(), value);
}
}
return map;
}

public static void main(String[] args) throws Exception {
List<Map<String, Object>> list = JSONUtil.fromJSONStr2List("[{\"name\":\"Richard\",\"age\":7},{\"name\":\"Susan\",\"age\":4}]");
System.out.println(list.get(0).get("name"));
Map<String, Object> map = JSONUtil.fromJSONStr2Map("{\"name\":\"Richard\",\"age\":7}");
System.out.println(map.get("name"));
}

}

测试结果:

Richard
Richard

  评论这张
 
阅读(1447)| 评论(0)
推荐

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017