我正在使用gwt客户端。我需要解析/反序列化从服务器返回的JSON(包含Map)。示例JSON: -
APPLICATIONSMAP: {
*
-
0: {
o name: "App 1"
o id: 0
}
*
-
1: {
o name: "App 2"
o id: 1
}
*
-
2: {
o name: "App 3"
o id: 2
}
如何将json反序列化回Java HashMap?
谢谢, 萨钦
答案 0 :(得分:1)
我不确定你要做的是正确的做事方式,但如果你真的想从JSON反序列化,你可以使用杰克逊:
答案 1 :(得分:1)
您可以尝试JavaScript Overlay Types,例如像这样:
public class OverlayExample implements EntryPoint {
public static final class MyJsMap extends JavaScriptObject {
protected MyJsMap() {}
public native Object get(Object key) /*-{
return this[key];
}-*/;
public native void put(Object key, Object val) /*-{
this[key] = val;
}-*/;
}
public void onModuleLoad() {
final String text = "[{ 1 : 'x', 2 : 'y' }]";
final MyJsMap map = asJsMap(text);
System.out.println(map.get("1"));
}
private static native MyJsMap asJsMap(final String str) /*-{
return eval(str)[0];
}-*/;
}
好的,它不完全是java.util.Map
,但如果您需要,可以改进MyJsMap
来实现java.util.Map
界面。
或者 - 如果您需要真实的java.util.HashMap
- 您可以迭代所有值并将其复制到HashMap
。在后一种情况下,按照@The Elite Gentleman的推荐使用GSON可能更容易。
答案 2 :(得分:0)
如果您使用gwt作为标记,那么您为什么要自己做JSON? GWT具有很好的序列化支持。