代码之家  ›  专栏  ›  技术社区  ›  ninehundreds

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

  •  1
  • ninehundreds  · 技术社区  · 7 年前

    我已经开始使用Moshi和Reformation 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"
        }
    }   
    

    “照片”字段出现以下异常:

    我对模型的定义如下:

    public class Acf {
    
    private String email;
    private String address;
    List<Photo>photos;
    
    }
    
    public class Photo {
        public int file;
    }
    

    我试着用各种其他方式在模型中声明属性,并通读文档,试图找出我做错了什么。我被困在这一点上,真的可以用第二双眼睛把我指向正确的方向。我有一种感觉,我错过了一些非常简单和明显的东西。提前感谢任何能帮忙的人。如果我遗漏了任何相关信息,请告诉我,我会更新帖子。

    使现代化 :我发现只有在获取多个ACF时才会发生此异常。如果我对单个对象执行请求,则所有内容都能正确解析。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Eric    7 年前

    根据错误,听起来您调用的端点可能会为该参数返回不同的类型(即,当您需要数组时返回一个字符串)。尝试从列表中更改它<&燃气轮机;并查看调用是否成功。您应该能够对对象进行类型检查,并根据需要对其进行强制转换。另一种选择是使用自定义类型适配器,但我不确定如何使用Moshi实现这一点。祝你好运