我正在尝试将哈希图转换为JSON漂亮打印输出。
我尝试了GSON,并认为将字符串作为输入处理到映射中时存在一些问题,还有其他方法吗?
Map<String, String> map = new LinkedHashMap();
Gson gson = new GsonBuilder().enableComplexMapKeySerialization().setPrettyPrinting().create();
map.put("Intro", Map_to_String);
map.put("Output", String_Val);
System.out.println(gson.toJson(map));
输出:
{
"Intro": {\"No\":0,\"Cast\":2},
"Output": "123"
}
必需的输出:
{
"Intro": {"No":0,"Cast":2},
"Output": "123"
}
答案 0 :(得分:1)
在这种情况下,您需要将Map_to_String
反序列化为对象Map
,然后再次序列化。
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import java.util.LinkedHashMap;
import java.util.Map;
public class GsonApp {
public static void main(String[] args) {
Map<String, Object> map = new LinkedHashMap<>();
Gson gson = new GsonBuilder()
.enableComplexMapKeySerialization()
.setPrettyPrinting()
.create();
String jsonString = "{\"No\":0,\"Cast\":2}";
Type mapType = new TypeToken<Map<String, String>>() {}.getType();
map.put("Intro", gson.fromJson(jsonString, mapType));
map.put("Output", "123");
System.out.println(gson.toJson(map));
}
}
打印:
{
"Intro": {
"No": "0",
"Cast": "2"
},
"Output": "123"
}