无法使用 Moshi 从返回的 JSON 中解析数组
Unable to Parse Array from Returned JSON using 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"
}
}
'photos' 字段出现以下异常:
com.squareup.moshi.JsonDataException: Expected BEGIN_ARRAY but was
STRING at path $[0].acf.photos
我这样定义模型:
public class Acf {
private String email;
private String address;
List<Photo>photos;
}
public class Photo {
public int file;
}
我尝试过以各种其他方式在模型中声明 属性,并通读文档以找出我做错了什么。我被困在这一点上,真的可以用另一双眼睛来指引我正确的方向。我有一种感觉,我错过了一些非常简单和明显的东西。在此先感谢任何可以提供帮助的人。如果我遗漏了任何相关信息,请告诉我,我会更新 post。
Update:我发现这个异常只发生在我获取多个ACFs的时候。如果我请求单个对象,一切都会正确解析。
根据错误,您调用的端点可能会为该参数返回不同类型(即,当您期望数组时返回字符串)。尝试将其从 List<> 更改为 Object 并查看调用是否成功。您应该能够对 Object 进行类型检查并从中转换您需要的任何内容。另一种方法是使用自定义类型适配器,但我不确定如何使用 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"
}
}
'photos' 字段出现以下异常:
com.squareup.moshi.JsonDataException: Expected BEGIN_ARRAY but was STRING at path $[0].acf.photos
我这样定义模型:
public class Acf {
private String email;
private String address;
List<Photo>photos;
}
public class Photo {
public int file;
}
我尝试过以各种其他方式在模型中声明 属性,并通读文档以找出我做错了什么。我被困在这一点上,真的可以用另一双眼睛来指引我正确的方向。我有一种感觉,我错过了一些非常简单和明显的东西。在此先感谢任何可以提供帮助的人。如果我遗漏了任何相关信息,请告诉我,我会更新 post。
Update:我发现这个异常只发生在我获取多个ACFs的时候。如果我请求单个对象,一切都会正确解析。
根据错误,您调用的端点可能会为该参数返回不同类型(即,当您期望数组时返回字符串)。尝试将其从 List<> 更改为 Object 并查看调用是否成功。您应该能够对 Object 进行类型检查并从中转换您需要的任何内容。另一种方法是使用自定义类型适配器,但我不确定如何使用 Moshi 来完成它。祝你好运。