GWT HashMap to/from JSON



今晚我可能有点累了,但这就是:

我想有GWT HashMap到/从JSON。我该如何做到这一点?

换句话说,我想取一个HashMap,取其JSON表示,将其存储在某个地方,并将其返回到其原生Java表示。

这是我的快速解决方案:

public static String toJson(Map<String, String> map) {
    String json = "";
    if (map != null && !map.isEmpty()) {
        JSONObject jsonObj = new JSONObject();
        for (Map.Entry<String, String> entry: map.entrySet()) {
            jsonObj.put(entry.getKey(), new JSONString(entry.getValue()));
        }
        json = jsonObj.toString();
    }
    return json;
}
public static Map<String, String> toMap(String jsonStr) {
    Map<String, String> map = new HashMap<String, String>();
    JSONValue parsed = JSONParser.parseStrict(jsonStr);
    JSONObject jsonObj = parsed.isObject();
    if (jsonObj != null) {
        for (String key : jsonObj.keySet()) {
            map.put(key, jsonObj.get(key).isString().stringValue());
        }
    }
    return map;
}

不是最优化的,但应该易于编码:使用JSONObject

迭代你的地图的条目,并在JSONObjectput它们(将每个值转换为适当类型的JSONValue),然后调用toString以获得JSON表示。

对于解析,使用JSONParser获得JSONObject,然后迭代keySet, get的值并将它们放入映射中(在打开JSONValue s之后)

但是要小心你使用的钥匙!在JS中,你不能使用任何类型的键作为属性名;浏览器中的JSON处理总是涉及到通过一个JS对象(或者自己实现JSON解析器,这不会执行相同的操作)

最新更新