【发布时间】:2017-01-14 14:26:40
【问题描述】:
我正在尝试解析 FCM 消息并构建 java 对象
在FirebaseMessageService中payload被解析如下
// Check if message contains a data payload.
if (remoteMessage.getData().size() > 0) {
Log.v(TAG, "Message data payload: " + remoteMessage.getData());
Map<String, String> params = remoteMessage.getData();
JSONObject object = new JSONObject(params);
Log.v(">>JSON_OBJECTTOSTRING ", object.toString())
检索到的字符串是{"message":"[{\"mName\":\"Milk\",\"mUnit\":\"1 Litre\"},{\"mName\":\"curd\",\"mUnit\":\"1 Litre\"}]"}
上面的字符串在另一个类中被解析如下
JsonObject jo = new JsonParser().parse(order).getAsJsonObject();
JsonArray jsonArray = jo.getAsJsonArray("message");
itemList = new Gson().fromJson(jsonArray, GroceryItem[].class);
在作为数组检索时出现此错误,原因如下:
java.lang.ClassCastException: com.google.gson.JsonPrimitive 无法转换为 com.google.gson.JsonArray
你能帮帮我吗?
【问题讨论】:
-
您的 json 字符串错误。 Json 字符串应该是这样的
{\"message\":[{\"mName\":\"Milk\",\"mUnit\":\"1 Litre\"},{\"mName\":\"curd\",\"mUnit\":\"1 Litre\"}]}。我用这个 json 字符串解析。它有效。
标签: java parsing gson deserialization