Java里面怎么将hashmap转换成JSON 对象| Java Debug 笔记

674 阅读1分钟

本文正在参加「Java主题月 - Java Debug笔记活动」,详情查看 活动链接

问题:Java里面怎么将hashmap转换成JSON 对象

ava里面怎么将hashmap转换成JSON 对象,并且再将JSON对象转换为JSON 字符串

回答一

你可以使用: new JSONObject(map);

注意:这只适用于Map<String, String>!

你可以从它的文档中获取其他方法

stleary.github.io/JSON-java/i…

回答二

你可以使用Jackson将Map转换成JSON,像下面那样:

Map<String,Object> map = new HashMap<>();
//你可以转换任何对象
String[] value1 = new String[] { "value11", "value12", "value13" };
String[] value2 = new String[] { "value21", "value22", "value23" };
map.put("key1", value1);
map.put("key2", value2);
map.put("key3","string1");
map.put("key4","string2");

String json = new ObjectMapper().writeValueAsString(map);
System.out.println(json);

Jackson的Maven依赖 :

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.5.3</version>
    <scope>compile</scope>
</dependency>

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.5.3</version>
    <scope>compile</scope>
</dependency>

如果你使用JSONObject库,你可以转换map到JSON ,像下面那样

Map<String, Object> map = new HashMap<>();
// 转换有list作为value的map
String[] value1 = new String[] { "value11", "value12", "value13" };
String[] value2 = new String[] { "value21", "value22", "value23" };
map.put("key1", value1);
map.put("key2", value2);

JSONObject json = new JSONObject(map);
System.out.println(json);
Maven Dependencies for JSONObject :

<dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20140107</version>
</dependency>

希望可以帮到你吧。编程快乐

回答三

使用json的样例

Map<String, Object> data = new HashMap<String, Object>();
    data.put( "name", "Mars" );
    data.put( "age", 32 );
    data.put( "city", "NY" );
    JSONObject json = new JSONObject();
    json.putAll( data );
    System.out.printf( "JSON: %s", json.toString(2) );

输出::

JSON: {
  "age": 32,
  "name": "Mars",
  "city": "NY"
}

你也可以尝试使用谷歌的GSON。谷歌的GSON是能够转换Java对象为JSON表示的最好的库。 code.google.com/p/google-gs…

文章翻译自Stack Overflow:stackoverflow.com/questions/1…