我刚开始接触Java。我正在做一个使用Maven和Java 1.7的项目。在我的项目中,我有一个HashMap。我想将这个HashMap输出为JSON。目前推荐使用哪种方法?
当我进行谷歌搜索时,我得到了很多选项(如Jackson)。但是,我不确定应该使用哪个。而且,我想使用一个可以通过Maven访问的库。
谢谢,
当我进行谷歌搜索时,我得到了很多选项(如Jackson)。但是,我不确定应该使用哪个。而且,我想使用一个可以通过Maven访问的库。
谢谢,
<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);
}
}
我猜你能想出如何使用它。
您还可以使用Jackson,它在Maven中可用。您可以像这样使用它:
Map<String,Object> map = .... // create a map
ObjectMapper mapper = new ObjectMapper()
String jsonFromMap = mapper.writeValueAsString(map);
ObjectMapper
有许多其他方法可用于读取/写入对象。Underscore-java库可以将哈希映射或数组列表转换为JSON,反之亦然。
代码示例:
import com.github.underscore.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"
}
}
确实,Java有很多JSON解析器。您可以查看json org link以了解可用于Java的不同JSON解析器。此外,this link为不同的JSON解析器提供了简单易懂的教程。
就个人而言,在不需要大量JSON解析的应用程序中,我使用simple json
,对于主要基于JSON的应用程序,我使用gson
。
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 + "\"";
}
}