2013-07-03 28 views
1

我建立一个由一个HashMap中定义nameValue对JSON对象把HashMap中<字符串,对象>在的JSONObject

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

jsonObject.put(hashmap); 

它添加nameValue对这样的:的

name=value代替name:value

有什么想法?

感谢

+1

看来你在使用 – kutschkem

+1

库这一个:?http://www.json.org/javadoc/org/json /JSONObject.html –

回答

3

迭代通过HashMap和付诸的JSONObject:

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

做了一个技巧。为什么不自动hsonObject.put h和它? – jonney

+0

@jonney我不确定,文档不包含任何只有一个参数的'put'方法......怪异的 –

+0

存在一个内置的JSONObject构造函数,它涵盖了例如值为数组的情况 – Multithreader

5

使用的JSONObject构造。 DON“T创建你自己,因为你可能会错过某些情况下,例如当该值是一个数组。

JSONObject jsonObject = new JSONObject(hashMap); 

这实际上是一个完整的解决方案,因为它涵盖了极端情况,如其中的值是一个数组。因此,它将使作为JSONArray你

+0

Hate挖掘一个旧的答案,但这不*工作。 OP要求从'HashMap '转换为'JSONObject'。你提到的构造函数只能用'HashMap '清楚地表明[这里](https://stackoverflow.com/a/12155874/3551916) – ThunderStruct

0

使用JSON的的putAll

 Map<String, Object> myMap = new HashMap<String, Object>(); 
     JSONObject jsonObject = new JSONObject(); 

     jsonObject.putAll(myMap); 
相关问题