【问题标题】:Gson Array of Strings to JsonArray字符串的 Gson 数组到 JsonArray
【发布时间】:2012-05-08 11:48:53
【问题描述】:

我正在使用 Gson 并尝试将一堆字符串值添加到 JsonArray 中,如下所示:

JsonArray jArray = new JsonArray();
jArray.add("value1");

问题是 add 方法只需要一个JsonElement

我尝试将字符串转换为 JsonElement,但没有成功。

我如何使用 Gson 来做到这一点?

【问题讨论】:

    标签: java json gson


    【解决方案1】:

    您可以创建一个包含字符串值的原语并将其添加到数组中:

    JsonArray jArray = new JsonArray();
    JsonPrimitive element = new JsonPrimitive("value1");
    jArray.add(element);
    

    【讨论】:

    • 为什么这会如此荒谬违反直觉?
    • 为什么文档告诉我们有一个 JsonArray.add(String)?!?
    【解决方案2】:

    似乎你应该创建一个new JsonPrimitive("value1") 并添加它。 见The javadoc

    【讨论】:

      【解决方案3】:

      对于较新版本的 Gson 库,现在我们也可以添加 Strings。它还扩展了对添加BooleanCharacterNumber 等的支持(查看更多here

      现在使用它对我有用:

      JsonArray msisdnsArray = new JsonArray();
      for (String msisdn : msisdns) {
          msisdnsArray.add(msisdn);
      }
      

      【讨论】:

        【解决方案4】:

        我自己也希望有这样的东西:

        JsonObject jo = new JsonObject();
        jo.addProperty("strings", new String[] { "value1", "value2" });
        

        但不幸的是,GSON 不支持,所以我创建了这个助手:

        public static void Add(JsonObject jo, String property, String[] values) {
            JsonArray array = new JsonArray();
            for (String value : values) {
                array.add(new JsonPrimitive(value));
            }
            jo.add(property, array);
        }
        

        然后像这样使用它:

        JsonObject jo = new JsonObject();
        Add(jo, "strings", new String[] { "value1", "value2" });
        

        瞧!

        【讨论】:

          猜你喜欢
          • 2011-06-14
          • 2023-03-21
          • 1970-01-01
          • 1970-01-01
          • 2016-06-07
          • 2013-03-30
          • 2013-05-08
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多