0

我有一些字符串,我想创建一个有效的 JSON。

输入:时间戳、特征、id、数据(本身就是有效的 JSON)

{"items":[{"id":"13123545","count": 5, "amount": 11.6},{"id": "1638343", "count": 1, "amount": 55.99}], "oid": 5556}

    //Some code here
    valueItems.add(new ValueItem(timestamp, feature, id, data));
    valueData.setInformation(valueItems);
    valueString = valueMapper.writeValueAsString(valueData);
    System.out.println(valueString);

输出:

{
    "information": [
        {
            "timestamp": "2013-01-01",
            "feature": "login",
            "id": 0,
            "data": "{\"items\":[{\"id\":\"14737\",\"count\": 5, \"amount\": 11.6},{\"id\": \"1874345\", \"count\": 1, \"amount\": 55.99}], \"oid\": 5556}"
        }
    ]
}

JSON 本身是有效的,但由于 . 为什么会这样?我怎样才能改变它或防止这种情况?

4

1 回答 1

3

问题是因为您将 JSON 文本表示为String,因此所有引号都被转义(即带有\")。

为什么在 Java 程序内部以这种方式表示 JSON?一般来说,维护一个纯 POJO 内部表示,然后一次性将所有这些转换为 JSON,而不是混合 POJO 和 JSON,更有意义。

在您的情况下,这意味着data您的类中的字段Information不应该是 a String,而应该是一个定义为包含Set<Item> itemsandlong oid或类似内容的对象。

于 2013-04-05T11:14:49.477 回答