将JSON字符串转换为Java Map(使用JSONLib)

13

我如何使用JSON-lib(http://json-lib.sourceforge.net/)将JSON字符串转换为Java Map? 我可以转换为DynaBean:

JSONObject jsonObject = (JSONObject) JSONSerializer.toJSON( str );  
DynaBean bean = (DynaBean) JSONSerializer.toJava( jsonObject );  

但是我还没有找到一种直接将其转换为Java Map的方法。

编辑:

我已经找到了解决方案:

JSONObject jsonObject = (JSONObject) JSONSerializer.toJSON( str );
Map<String, Object> myMap = (Map<String, Object>) JSONObject.toBean(jsonObject, Map.class)

1
你能否把你的解决方案发布为自己问题的答案并接受它呢?谢谢。 - Samir Talwar
1个回答

21

另一种方法是利用 JSONObject 实现了 java.util.Map 这一事实。所以它就是一个 map。

import java.util.Map;

import net.sf.json.JSONObject;

public class Foo
{
  static String json = "{\"one\":\"won\",\"two\":2,\"three\":false}";

  public static void main(String[] args)
  {
    JSONObject jsonObject = JSONObject.fromObject(json);
    Map map = jsonObject;
    System.out.println(map);
  }
}

哇,没注意到这个 :) 谢谢! - Le_Coeur
1
如果有进一步将生成的Map与JSON-lib解耦的兴趣,请注意,可以使用复制构造函数从现有Map的条目创建新的Map,例如:Map map = new HashMap(jsonObject); - Programmer Bruce
1
如果JSON是嵌套的呢? - pkanane
3
请注意,这个答案不适用于org.json.JSONArray! - Craig B

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接