代码之家  ›  专栏  ›  技术社区  ›  loeschg

为什么GSON不能正确解析这些字段?(字段命名策略.LOWER_CASE_WITH_UNDERSCORES)

  •  0
  • loeschg  · 技术社区  · 12 年前

    我有一个JSONObject数组,我正在尝试用GSON解析。我正在使用 FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES 。它对大多数字段进行了正确的解析(因此FieldNamingPolicy设置正确),但我得到 null 已为返回

    {
          "image_sq_48x48_url": "url1",
          "image_sq_64x64_url": "url2",
          "image_sq_96x96_url": "url3"
    }
    

    具有字段名称

    imageSq48x48Url
    imageSq64x64Url
    imageSq96x96Url
    

    也许一个更好的问题是什么是正确的camelCase?我也尝试过

    imageSq48X48Url
    imageSq48X48url
    

    如果我用 @SerializedName("image_sq_96x96_url") 它正确解析/填充。

    1 回复  |  直到 12 年前
        1
  •  1
  •   Brian Roach    12 年前

    不幸的是,JSON中的这些字段名不符合Gson使用该策略寻找的内容。

    如果创建POJO并将其序列化,您可以看到问题所在:

    class MyPojo 
    {
        String imageSq48x48Url = "hi";
    }
    

    Gson使用该策略生成的JSON是:

    {"image_sq48x48_url":"hi"}
    

    它不将数字视为“单词”的前导指示符/开头。

    如果将字段重命名为:

    String imageSq_48x48Url;
    

    它将适用于JSON示例和该策略。

    基本上,您需要创建自己的类来实现 FieldNamingStrategy 它将以您想要的方式处理这些JSON字段名,或者 @SerializedName 注释。