无法使用Moshi从返回的JSON中解析数组

时间:2017-07-17 15:08:27

标签: json retrofit2 moshi

我已经开始使用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时才会出现此异常。如果我对单个对象发出请求,则所有内容都会正确解析。

1 个答案:

答案 0 :(得分:0)

基于错误,它听起来像你正在调用的端点可能会为该参数返回不同的类型(即,当你期望一个数组时,一个字符串)。尝试从列表中更改它&lt;&gt;到一个对象,看看调用是否成功。您应该能够键入检查对象并从中转换所需的任何内容。另一种方法是使用自定义类型的适配器,但我不知道如何使用Moshi完成它。祝你好运。