无法使用Moshi解析返回的JSON数组
我已经开始使用Moshi以及Retrofit 2,并遇到了解析服务调用返回的父对象内的对象数组的问题。返回的JSON看起来是这样的:无法使用Moshi解析返回的JSON数组
{
"acf": {
"email": "[email protected]",
"address": "24 Cortland Avenue",
"country": "US",
"description": "Oh my goodness",
"created_at": "1416672067",
"updated_at": "1416672067",
"facebook": "",
"contact": "Dirk Gently",
"photos": [
{
"file": 3525
},
{
"file": 3526
},
{
"file": 6110
},
{
"file": 3527
},
{
"file": 3528
},
{
"file": 6700
},
{
"file": 7404
},
{
"file": 7419
}
],
"latitude": "40.801249",
"longitude": "-99.746280"
}
}
我得到的 '照片' 字段以下异常:
com.squareup.moshi.JsonDataException:预期BEGIN_ARRAY但在路径 STRING $ [0] .acf.photos
我定义的车型,像这样:
public class Acf {
private String email;
private String address;
List<Photo>photos;
}
public class Photo {
public int file;
}
我试过以各种其他方式在模型中声明属性,并通过文档读取,试图找出我做错了什么。我被困在这一点上,真的可以用第二套眼睛指向正确的方向。我有一种感觉,我错过了一些痛苦简单明显的事情。在此先感谢任何可以提供帮助的人。如果我遗漏了任何相关信息,请通知我,我会更新信息。
更新:我发现这个异常只发生在我获取多个ACF时。如果我为单个对象发出请求,则所有内容都可以正确解析。
基于错误,它听起来像您要调用的端点可能会返回该参数的不同类型(例如,当您期待数组时)。尝试将它从列表<>更改为对象,并查看该调用是否成功。你应该能够对对象进行类型检查,并从它中输出你需要的东西。另一种方法是使用自定义类型的适配器,但我不确定如何使用Moshi来完成该功能。祝你好运。
我很确定我尝试用一个通用对象替换数组,但过去两天有点模糊。我会给它一个镜头。谢谢! – ninehundredt
非常感谢您的建议。这并不理想,但考虑到我无法更改端点,它效果很好。 – ninehundredt
你可以发布所有你的模型类是Acf,照片和MainRespose – Ashwani
是否曾经有一个JSON响应的字符串值为''照片''? –
@EricCochran是的。如果我通过id获取单个记录,它会解析得很好,但当我获取多个(分页)时,它不适用于该字段。我将深入研究文档,看看是否有更好的方法来记录它。 – ninehundredt