将HashMap<String, object>放入JsonObject

4

我正在构建一个由HashMap中定义的nameValue对组成的JSON对象。

我遇到的问题是当我调用:

jsonObject.put(hashmap);

它会添加像这样的nameValue对:

name=value 而不是 name:value

你有什么想法吗?

谢谢


1
你使用的是哪个库? - kutschkem
1
看起来是这个:http://www.json.org/javadoc/org/json/JSONObject.html - Jonathan Naguin
2个回答

7
使用 JSONObject 构造函数进行转换。不要自己创建,因为可能会遗漏一些情况,例如当值是数组时。
JSONObject jsonObject = new JSONObject(hashMap);

这实际上是一个完整的解决方案,因为它考虑了一些特殊情况,例如值为数组的情况。因此,它会将其转换为JSONArray。


4
不太愿意挖出旧答案,但这种方法不起作用。提问者要求将HashMap<String, Object>转换为JSONObject。您提到的构造函数仅适用于HashMap<String, String>,如此链接所述。 - ThunderStruct

6

遍历HashMap并将其放入jsonObject:

Iterator it = mp.entrySet().iterator();
while (it.hasNext()) {
    Map.Entry pairs = (Map.Entry)it.next();
    jsonObject.put(pairs.getKey(), pairs.getValue() );
}

那做到了目的。为什么 jsonObject.put 不自动处理它呢? - Jono
@jonney 我不确定,文档中没有只带一个参数的 put 方法...很奇怪。 - Jonathan Naguin
存在一个内置的JSONObject构造函数,它可以处理值为数组的情况。 - Multithreader

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