有没有人知道一个java库可以很容易地将java Maps编码成json对象,反之亦然?
更新
由于无法解释(有时我讨厌)的原因,我不能在我的环境中使用泛型。
我想要做的是拥有这样的东西:
Map a = new HashMap();
a.put( "name", "Oscar" );
Map b = new HashMap();
b.put( "name", "MyBoss");
a.put( "boss", b ) ;
List list = new ArrayList();
list.add( a );
list.add( b );
String json = toJson( list );
// and create the json:
/*
[
{
"name":"Oscar",
"boss":{
"name":"MyBoss"
}
},
{
"name":"MyBoss"
}
]
*/
并且能够以地图列表的形式再次拥有它
List aList = ( List ) fromJson( jsonStirng );
发布于 2010-03-23 07:34:19
JSON-Simple看起来相对容易使用(下面的例子)。
映射到JSON:
Map map = new HashMap();
map.put("name", "foo");
map.put("nickname", "bar");
String jsonText = JSONValue.toJSONString(map);
JSON to List/Map:
String s = yourJsonString;
List list = (JSONArray) JSONValue.parse(s);
Map map = (JSONObject) list.get(0);
发布于 2010-03-23 07:37:11
为此,您可以使用Google Gson。它对Generic types有很好的支持。
这是一个SSCCE
package com.stackoverflow.q2496494;
import java.util.LinkedHashMap;
import java.util.Map;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
public class Test {
public static void main(String... args) {
Map<String, String> map = new LinkedHashMap<String, String>();
map.put("key1", "value1");
map.put("key2", "value2");
map.put("key3", "value3");
Gson gson = new Gson();
// Serialize.
String json = gson.toJson(map);
System.out.println(json); // {"key1":"value1","key2":"value2","key3":"value3"}
// Deserialize.
Map<String, String> map2 = gson.fromJson(json, new TypeToken<Map<String, String>>() {}.getType());
System.out.println(map2); // {key1=value1, key2=value2, key3=value3}
}
}
发布于 2010-03-23 07:38:01
您可以从Json.org查看该站点,以获取用Java语言编写的优秀JSON库的列表。
own自己的implementation JSONObject
就可以做到这一点。从他们的JavaDoC
/**
* Construct a JSONObject from a Map.
*
* @param map A map object that can be used to initialize the contents of
* the JSONObject.
*/
public JSONObject(Map map);
你可以做到
JSONObject json = new JSONObject(map);
要将JSON字符串转换回object...
String jsonString = "{\"name\" : \"some name\", \"age\" : 10}";
JSONObject json = new JSONObject(jsonString);
您可以访问如下值:
int age = json.getInt("age");
构造函数JavaDoC
从源JSON文本字符串构造JSONObject。这是最常用的JSONObject构造函数。
参数: source以{
开头的字符串(左括号),以}
结尾的字符串(右括号)。
https://stackoverflow.com/questions/2496494
复制相似问题