【发布时间】:2017-10-30 14:14:09
【问题描述】:
我正在使用 Gson 从响应中解析值。我的回复看起来像(在邮递员中):
{
"payLoad": {
"totalItems": 1,
"totalPages": 1,
"items": [
{
"id": "f13e9f94fbb144d2956326f6c50f4d29",
"rechargeStatus": "PENDING",
"dateOfRequest": "2017-05-30T11:29:33",
"amount": 1,
"category": "Electricity",
"operator": "Electricity Limited",
"whereToRecharge": "212323232"
}
]
},
"success": true,
"timestamp": "2017-05-30T13:08:18"
}
当我在AS 中记录我的回复时,我有:
Fetch Recharge Payload : {totalItems=1.0, totalPages=1.0, items=
[{uuid=f12e9f94fbb144d2956326f6c50f4d29, rechargeStatus=PENDING,
dateOfRequest=2017-05-30T11:29:33, amount=1.0, category=Electricity,
operator=Electricity Limited, whereToRecharge=212323232}]}
我已经为日期格式添加了GsonBuilder,如下所示(建议here):
Gson gson = new GsonBuilder()
.setDateFormat("yyyy-MM-dd'T'HH:mm:ss")
.create();
解析数据如下:
Map<String, Object> map = (Map<String, Object>) myResponse.payLoad;
List<Recharge> rechargeTable = stringToArray(String.valueOf(map.get("items")), Recharge[].class);
...
public static <T> List<T> stringToArray(String s, Class<T[]> clazz) {
T[] arr = new Gson().fromJson(s, clazz);
return Arrays.asList(arr);
}
我得到的错误是:
com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException:
Unterminated object at line 1 column 94 path $[0].dateOfRequest
主要问题是解析日期。我需要添加更多配置吗?
额外问题: - 为什么我的整数被转换成双精度数? - 为什么要从字符串值中删除双引号?
【问题讨论】:
-
这个链接可能有帮助
-
你的 logcat 中的 json 看起来不太好,它是格式错误的 json
-
@Target 已经使用了该问题所暗示的解决方案。
-
@PratikVyas 我显示了来自
Postman和 AS 的相同请求响应。我正在使用来自github.com/orhanobut/logger 的Logger。也许它只是在记录之前删除了一些东西。