如何在Java中转换或转换哈希图到JSON对象,并再次将JSON对象转换为JSON字符串?


当前回答

就我而言,我不想要任何依赖。使用Java 8,你可以得到一个JSON字符串,如下所示:

Map<String, Object> map = new HashMap<>();
map.put("key", "value");
map.put("key2", "value2");
String json = "{"+map.entrySet().stream()
    .map(e -> "\""+ e.getKey() + "\":\"" + String.valueOf(e.getValue()) + "\"")
    .collect(Collectors.joining(", "))+"}";

其他回答

如果你正在使用net.sf.json.JSONObject,那么你不会在其中找到JSONObject(map)构造函数。您必须使用公共静态JSONObject fromObject(对象对象)方法。该方法接受JSON格式的字符串、map、dynabean和javabean。

JSONObject jsonObject = JSONObject.fromObject(myMap);

迟到的派对,但这里是我的GSON adhoc作家序列化hashmap。我必须写映射的键值对作为json字符串属性,期望一个特定的整数类型。我不想为这个简单的用例创建自定义JavaBean包装器。

GSON JsonWriter类是一个易于使用的序列化器类,它包含少量强类型writer.value()函数。

// write Map as JSON document to http servlet response
Map<String,String> sd = DAO.getSD(123);
res.setContentType("application/json; charset=UTF-8");
res.setCharacterEncoding("UTF-8");
JsonWriter writer = new JsonWriter(new OutputStreamWriter(res.getOutputStream(), "UTF-8"));
writer.beginObject();
for(String key : sd.keySet()) {
    String val = sd.get(key);
    writer.name(key);
    if (key.equals("UniqueID") && val!=null)
        writer.value(Long.parseLong(val));
    else
        writer.value(val);
}
writer.endObject();
writer.close();

如果不需要任何自定义类型,我可以只使用toJson()函数。jar库只有不到190KB,没有任何残酷的依赖关系。易于在任何自定义servlet应用程序或独立应用程序上使用,无需大型框架集成。

Gson gson = new Gson(); 
String json = gson.toJson(myMap); 

这通常是Json库的工作,你不应该尝试自己做。所有json库都应该实现您所要求的内容,而且您可以做到 在页面底部的json.org上找到Java Json库的列表。

java库可以将哈希映射或数组列表转换为json,反之亦然。

import com.github.underscore.U;
import java.util.*;

public class Main {

    public static void main(String[] args) {

        Map<String, Object> map = new LinkedHashMap<>();
        map.put("1", "a");
        map.put("2", "b");

        System.out.println(U.toJson(map));
        // {
        //    "1": "a",
        //    "2": "b"
        // }
    }
}

以下是我与GSON的单线解决方案:

myObject = new Gson().fromJson(new Gson().toJson(myHashMap), MyClass.class);