簡體   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