我有一个JSONArray的JSONObjects,我试图用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")
进行映射,则会正确解析/填充。
答案 0 :(得分:1)
不幸的是,JSON中的那些字段名不符合Gson使用该策略所寻求的内容。
如果您创建POJO并将其序列化,您可以看到问题所在:
class MyPojo
{
String imageSq48x48Url = "hi";
}
Gson使用该策略生成的JSON是:
{"image_sq48x48_url":"hi"}
它没有考虑/查看数字作为领先指标/"字"的开头。
如果您将字段重命名为:
String imageSq_48x48Url;
它适用于您的JSON示例和该策略。
基本上,您需要创建自己的实现FieldNamingStrategy
的类,该类将按照您希望的方式处理这些JSON字段名,或者执行您使用@SerializedName
注释执行的操作。