繁体   English   中英

Google gson.toJson(List)以字符串而不是数组的形式返回响应

[英]Google gson.toJson(List) returning response as string instead of array

我正在尝试使用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?

我找到了解决我问题的方法。 我使用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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM