4

i building a json object that consists of nameValue pairs defined in a Hashmap

the issue i am having is when i invoke:

jsonObject.put(hashmap);

It adds the nameValue pairs like this:

name=value instead of name:value

Any thoughts?

Thanks

Jono
  • 17,341
  • 48
  • 135
  • 217

2 Answers2

7

Use JSONObject constructor. DON"T CREATE YOUR OWN since you might miss some cases such when the value is an array.

JSONObject jsonObject = new JSONObject(hashMap);

This is actually a complete solution since it covers for corner cases such as where the value is an array. Thus, it will make it as JSONArray for you.

Multithreader
  • 878
  • 6
  • 14
  • 4
    Hate to dig up an old answer, but this does *not* work. The OP is asking for a conversion from `HashMap` to `JSONObject`. The constructor you mentioned only works with `HashMap` as made clear [here](https://stackoverflow.com/a/12155874/3551916) – ThunderStruct Jun 01 '17 at 03:15
6

Iterate through the HashMap and put to the jsonObject:

Iterator it = mp.entrySet().iterator();
while (it.hasNext()) {
    Map.Entry pairs = (Map.Entry)it.next();
    jsonObject.put(pairs.getKey(), pairs.getValue() );
}
Jonathan Naguin
  • 14,526
  • 6
  • 46
  • 75