Google gson.toJson(List)将响应返回为字符串而不是数组

时间:2014-11-12 06:06:51

标签: java json gson arrays jsonobject

我正在尝试使用JsonObject将java对象转换为String。以下是我用来添加属性的代码:

    JsonObject jsonObject = new JsonObject();
    jsonObject.addProperty("id", favoriteWrapper.getId());
    jsonObject.addProperty("menuitemid", favoriteWrapper.getMenuItemId());
    jsonObject.addProperty("displayname", favoriteWrapper.getDisplayName());
    jsonObject.addProperty("description", favoriteWrapper.getDescription());
    jsonObject.addProperty("alias", favoriteWrapper.getAlias());
    Gson gson = new Gson();
    jsonObject.addProperty("condiments", gson.toJson(favoriteWrapper.getCondiments()));

这里最后一个属性调味品是一个Long值列表,以下是检索到的响应:

[
    {
        "id": 1,
        "menuitemid": 1,
        "displayname": "Ham",
        "description": "Ham",
        "alias": "Ham",
        "condiments": "[1,8,34,2,6]"
    }
]

预期产量如下,对于调味品来说是不同的:

   [
        {
            "id": 1,
            "menuitemid": 1,
            "displayname": "Ham",
            "description": "Ham",
            "alias": "Ham",
            "condiments": [1,8,34,2,6]
        }
    ]

如何将调味品作为JSON数组而非String?

1 个答案:

答案 0 :(得分:2)

我找到了问题的答案。我使用JsonArray和JsonPrimitive来实现所需的响应:

      JsonObject jsonObject = new JsonObject();
      jsonObject.addProperty("id", favoriteWrapper.getId());
      jsonObject.addProperty("menuitemid", favoriteWrapper.getMenuItemId());
      jsonObject.addProperty("displayname", favoriteWrapper.getDisplayName());
      jsonObject.addProperty("description", favoriteWrapper.getDescription());
      jsonObject.addProperty("alias", favoriteWrapper.getAlias());

      JsonArray condiments = new JsonArray();
         for (Long condimentId : favoriteWrapper.getCondiments()) {
                condiments.add(new JsonPrimitive(condimentId));
         }

      jsonObject.add("condiments", condiments);
      jsonObjects.add(jsonObject);