2014-02-10 128 views
0

我有一个JSON数组的JSONArray,我试图用GSON解析。我正在使用FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES。它解析正确大多数字段(所以FieldNamingPolicy设置正确的),但我得到null返回为什么GSON不能正确解析这些字段? (FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)

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

字段名

imageSq48x48Url 
imageSq64x64Url 
imageSq96x96Url 

也许一个更好的问题是什么是正确的骆驼香烟盒?我也曾尝试

imageSq48X48Url 
imageSq48X48url 

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

回答

1

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

如果创建一个POJO和序列化,你可以看到什么的问题是:

class MyPojo 
{ 
    String imageSq48x48Url = "hi"; 
} 

从GSON使用该策略产生的JSON是:

{"image_sq48x48_url":"hi"} 

它不考虑/将数字数字看作领先指标/“单词”的开始。

如果重命名字段设置为:

String imageSq_48x48Url; 

它将与您的JSON例子和战略合作。

基本上,您需要创建自己的类,该类实现FieldNamingStrategy,它可以按照您的方式处理这些JSON字段名,或者使用@SerializedName注释执行您的操作。

相关问题