我已经开始使用Moshi和Retrofit 2,并且遇到了解析从服务调用返回的父对象中的对象数组的问题。返回的JSON如下所示:
{
"acf": {
"email": "dirk@dirkgently.com",
"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时才会出现此异常。如果我对单个对象发出请求,则所有内容都会正确解析。
答案 0 :(得分:0)
基于错误,它听起来像你正在调用的端点可能会为该参数返回不同的类型(即,当你期望一个数组时,一个字符串)。尝试从列表中更改它&lt;&gt;到一个对象,看看调用是否成功。您应该能够键入检查对象并从中转换所需的任何内容。另一种方法是使用自定义类型的适配器,但我不知道如何使用Moshi完成它。祝你好运。