在 Java 中将 HashMap 写入 JSON
Posted
技术标签:
【中文标题】在 Java 中将 HashMap 写入 JSON【英文标题】:Write HashMap to JSON in Java 【发布时间】:2014-05-21 04:47:17 【问题描述】:我是 Java 新手。我一直在做一个使用 Maven 和 Java 1.7 的项目。在我的项目中,我有一个 HashMap。我想将此 HashMap 输出到 JSON。目前推荐的方法是什么?
当我进行 Google 搜索时,我会得到很多选择(例如 Jackson)。但是,我不确定我应该使用什么。另外,我想使用一个可以通过 Maven 访问的库。
谢谢,
【问题讨论】:
可能是***.com/questions/12155800/…的副本 这里有你需要的一切mkyong.com/java/… 【参考方案1】:Underscore-java库可以将哈希映射或数组列表转换为json,反之亦然。
代码示例:
import com.github.underscore.lodash.U;
import java.util.*;
public class Main
@SuppressWarnings("unchecked")
public static void main(String[] args)
Map<String, Object> map = new HashMap<String, Object>();
map.put("1", "a");
map.put("2", "b");
System.out.println(U.toJson(map));
Map<String, Object> newMap = (Map<String, Object>) U.fromJson($.toJson(map));
System.out.println(newMap.get("1")); // -> "a"
【讨论】:
【参考方案2】:如果您需要从 hashmap 创建 json 并且如果您没有嵌套映射:-
private String createJsonString( Map<String, Object> map)
String jsonString = " ";
Set<Map.Entry<String, Object>> entries = map.entrySet();
for (Map.Entry<String, Object> entry : entries)
jsonString = jsonString + "\"" + entry.getKey() + "\"";
jsonString += " : ";
jsonString = jsonString + getJsonValue(entry.getValue());
jsonString += ", ";
int i = jsonString.lastIndexOf(",");
jsonString = jsonString.substring(0, i);
jsonString += " ";
return jsonString;
private String getJsonValue(Object value)
if (value == null)
return "";
else if (value instanceof Number || value instanceof Boolean)
return value.toString();
else
return "\"" + value + "\"";
【讨论】:
这是错误的,因为它没有转义可能破坏 json 结构的 java 字符串值。【参考方案3】:您也可以使用Jackson,即in Maven。你可以这样使用它:
Map<String,Object> map = .... // create a map
ObjectMapper mapper = new ObjectMapper()
String jsonFromMap = mapper.writeValueAsString(map);
请注意,ObjectMapper
有许多其他方法可以读取/读取对象。
我推荐它,因为它易于使用,支持注释,可用于生产并被许多组织使用,而且可能最重要的是,它集成在许多现有框架(Spring、Jersey、RESTeasy、Camel 等)中。
我对 GSON 不熟悉,但有一个 discussion 关于这两个你可能想看看。
【讨论】:
【参考方案4】:您可以使用Google GSON 库。
只需将其添加到您的 pom 中
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.2.4</version>
</dependency>
并将这个类添加到你的项目中
import java.lang.reflect.Type;
import java.util.*;
import com.google.gson.*;
import com.google.gson.reflect.TypeToken;
public class JsonHelper
private static final Gson gson = new GsonBuilder().disablehtmlEscaping().create();
private static final Type TT_mapStringString = new TypeToken<Map<String,String>>().getType();
public static Map<String, String> jsonToMapStringString(String json)
Map<String, String> ret = new HashMap<String, String>();
if (json == null || json.isEmpty())
return ret;
return gson.fromJson(json, TT_mapStringString);
public static String mapStringStringToJson(Map<String, String> map)
if (map == null)
map = new HashMap<String, String>();
return gson.toJson(map);
我猜你可以弄清楚如何使用它
【讨论】:
【参考方案5】:确实有很多java的json解析器。查看the json org link 以了解可用于 java 的不同 json 解析器。此外this link 为不同的 json 解析器提供了很好的简单教程。
我个人在不需要大量 json 解析的应用程序中使用 simple json
,而对于主要基于 json 并因此必须执行大量 json 的应用程序使用 gson
。
【讨论】:
答案应该主要在***中回答,而不仅仅是指向其他站点。 感谢您的评论。当我回答未来的问题时会记住这一点。以上是关于在 Java 中将 HashMap 写入 JSON的主要内容,如果未能解决你的问题,请参考以下文章