我得到两种类型的Json Response。
一个是:
import React from 'react';
import { Text } from 'react-native';
import Card from './Card';
const AlbumDetail = (props) => (
<Card>
<Text styles={props.album.title}></Text>
</Card>
);
export default AlbumDetail;
另一种格式是:
{
"status": true,
"datetime": "",
"data": [
{
"name": "xxx"
}
]
}
对象“数据”在某些响应上将是{
"status": true,
"datetime": "",
"data":
{
"name": "aaa"
}
}
,在某些响应上将是JsonObject
,如何处理两种类型的请求。
我正在使用Retrofit api进行通信。
答案 0 :(得分:0)
如果您使用的是GsonConverterFactory
,则可以使用JsonElement
来表示JsonObject
和JsonArray
,因为它们都扩展了JsonElement
。
然后,您可以使用方法JsonElement#isJsonArray()
进行检查并采取相应的措施。
答案 1 :(得分:0)
您可以将“数据”作为JsonElement获得并进行检查:分别为JsonObject或JsonArray。例如,您可以编写自定义JsonDeserializer
:
class CustomDeserializer implements JsonDeserializer<YourModel> {
@Override
public YourModel deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
JsonObject responseObj = json.asJsonObject;
JsonElement data = responseObj.get("data");
// get your dinamic data
if (data.isJsonObject()) {
// parse as object
} else if (data.isJsonArray()) {
// parse as array
}
}