JsonObjectBuilder builder = factory.createObjectBuilder().add("input", input);
JsonObject jsonData = builder.build();
String jsonDataString = jsonData.toString();
try {
OutputStream jsonStream = new FileOutputStream(jsonPath);
OutputStreamWriter jsonStreamWriter = new OutputStreamWriter(jsonStream);
Gson gson = new GsonBuilder().setPrettyPrinting().create();
String prettyOutput = gson.toJson(jsonData);
System.out.println(prettyOutput);
jsonStreamWriter.write(prettyOutput);
}
catch(Exception e) {}
我得到的输出很奇怪:
它在键的每个字符串值之前添加'“value”:'。
我的JSON数据是这样的:
{
"input": {
"record0": {
"Active": "",
"Level": "",
"Name": "Pre-Session",
"Description": "",
"Record": "",
"Field": "",
"Std. Rule": "",
"Ext. Rule": "//Updated By: Sukanya Dasgupta On: 25-Jan-2016"
}
}
}
答案 0 :(得分:0)
不是我的预期,但我认为问题是public String toJson(Object src)
丢失了类型信息:
当指定的对象不是通用对象时,应该使用此方法 类型。此方法使用Object.getClass()来获取该类型 指定的对象,但getClass()失去了泛型类型 信息源于Java的Type Erasure功能。