我正在尝试使用gson将我的Json对象转换为漂亮的格式但遇到奇怪的

时间:2016-01-27 06:52:28

标签: json gson pretty-print

    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”:'。 image

我的JSON数据是这样的:

{
    "input": {
        "record0": {
            "Active": "",
            "Level": "",
            "Name": "Pre-Session",
            "Description": "",
            "Record": "",
            "Field": "",
            "Std. Rule": "",
            "Ext. Rule": "//Updated By: Sukanya Dasgupta On: 25-Jan-2016"
        }
    }
}

1 个答案:

答案 0 :(得分:0)

不是我的预期,但我认为问题是public String toJson(Object src)丢失了类型信息:

  

当指定的对象不是通用对象时,应该使用此方法   类型。此方法使用Object.getClass()来获取该类型   指定的对象,但getClass()失去了泛型类型   信息源于Java的Type Erasure功能。