我刚从gson开始,我想解析一个以对象开头的JSON字符串,并且总是得到相同的错误JSON。
{ "code": 200, "data": { "messages": [ { "emailSender": "dsfd@mail.ru", "countryCode": null, "emailSenderReply": null, "rejectedReason": null, "messageReplySenderMessageDeleted": null, "lastNameReceiver": null, "wpMessagesRatingReplyId": null, "wpMessagesRatingRating": null, "countryMemberId": 143, "phoneSenderReply": null, "messageReplyReceiverMessageDeleted": null, "readStatus": "unread", "phoneReceiverReply": null, "membersSenderUid": "m8692031", "wpMessagesRequestTitle": "Fazzzzzz", "title": "Fazzzzzz", "countryTitle": null, "emailReceiver": null, "firstNameReceiverReply": null, "id": 1288, "messageReplyId": null, "membersReceiverUid": "m1000002", "time": "2014-12-28 14:32:09", "wpMessagesRequestCategoryId": 4, "lastNameReceiverReply": null, "lastNameSender": "dsad", "phoneReceiver": null, "status": "unanswered", "messageReplyReceiver": null, "messageReplyStatus": null, "memberReceiverRole": "admin", "isConsultant": 1, "roleReplyReceiver": null, "wpMesssagesRequestCategoriesSystemName": "orders", "lastNameSenderReply": null, "memberSenderRole": "member", "wpMesssagesRequestCategoriesName": "Orders", "requestMessage": 1101, "wpMessagesRequestPriority": "middle", "messageReplyTime": null, "message": "OLOLO", "wpMessagesRequestCountryId": null, "sender": 4481, "firstNameReceiver": null, "messageReplyMessage": null, "firstNameSender": "asdas", "firstNameSenderReply": null, "emailReceiverReply": null, "roleReplySender": null, "messageReplySender": null, "wpMessagesRequestProductId": null, "receiver": 4364, "isMessageForwarded": 0, "wpMessagesRequestStatus": "not-taken", "phoneSender": "2(342)-4-23-42", "wpMessagesRequestMessage": "OLOLO" } ] } }
我一直遇到错误:
Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 3 column 12
我的日志中的错误指向这一行:
Gson gson = new GsonBuilder().create(); Main main=gson.fromJson(a, Main.class);
这是我的pojo
static class Main{ int code; boolean error; List<Data> data; } static class Data{ Enteties messages; } static class Enteties{ String msg_title; String msg_time; int msg_id; String msg_status; @Override public String toString(){ return msg_title+" "+msg_time+" "+msg_id+" "+msg_status; } }
您的主类将数据作为列表。您的JSON将其作为对象。类型需要匹配。如果您希望main中只有1个数据,请不要使用列表。如果期望1个或多个数据,则使生成数据的代码向下发送一个数组(即使该数组中只有1个对象)。