Json字符串转Map
2020-03-11 本文已影响0人
史啸天
今天为大家分享一下,超实用的json字符串转Map的方法,可以收藏起来做工具类使用哦;二话不说,上代码;
1、引入jar
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
<classifier>jdk15</classifier>
</dependency>
2、创建工具类
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import java.util.Map;
public class JsonToMap {
private Object oJson;
public JsonToMap(Object jStr) {
this.oJson = jStr;
}
/**
* 将获取的value值封装给对象
* @param s value值
* @return 对象
*/
public JsonToMap get(Object s) {
if (s instanceof Integer) return new JsonToMap(JSONArray.fromObject(oJson).get((int) s));
else return new JsonToMap(jsonToMap(oJson).get(s));
}
@Override
public String toString() {
return oJson.toString();
}
/**
* json string 转换为 map 对象
*
* @param jsonObj
* @return
*/
public static Map<Object, Object> jsonToMap(Object jsonObj) {
JSONObject jsonObject = JSONObject.fromObject(jsonObj);
Map<Object, Object> map = (Map) jsonObject;
return map;
}
}
3、测试一下
/**
* 测试jsonToMap
*/
public static void main(String[] args) {
/**
* json示例
{
"name": "BeJson",
"address": {
"street": "科技园路.",
"city": "江苏苏州",
"country": "中国"
},
"links": [
{
"name": "Google",
"url": "http://www.google.com"
},
{
"name": "Baidu",
"url": "http://www.baidu.com"
}
]
}
*/
String json = "{\n" +
" \"name\": \"BeJson\",\n" +
" \"address\": {\n" +
" \"street\": \"科技园路.\",\n" +
" \"city\": \"江苏苏州\",\n" +
" \"country\": \"中国\"\n" +
" },\n" +
" \"links\": [\n" +
" {\n" +
" \"name\": \"Google\",\n" +
" \"url\": \"http://www.google.com\"\n" +
" },\n" +
" {\n" +
" \"name\": \"Baidu\",\n" +
" \"url\": \"http://www.baidu.com\"\n" +
" }\n" +
" ]\n" +
" }";
JsonToMap map = new JsonToMap(json);
System.out.println(map.get("name").toString());
System.out.println(map.get("address").get("country"));
System.out.println(map.get("links").get(0).get("name"));
}
4、输入结果
BeJson
中国
Google
5、总结
因为返回结果是jsonMap所以面对数组类型的,也可以直接get(index)出来,是不是超方便。