我的JSON样子如下:
JSON
"message_defaults": { "LabResultsRequestDefaultMessage": { "MsgTypeId": 8, "StaffId": 122, "StaffName": "Willis,Sam", "FirstName": "Sam", "MI": "D", "LastName": "Willis", "DefaultMessage": "Lab Department" }, "ReferralRequestDefaultMessage": { "MsgTypeId": 6, "StaffId": 122, "StaffName": "Willis,Sam", "FirstName": "Sam", "MI": "D", "LastName": "Willis", "DefaultMessage": "Physican" }, "MessageComposeDefaultMessage": { "MsgTypeId": 1, "StaffId": 122, "StaffName": "Willis,Sam", "FirstName": "Sam", "MI": "D", "LastName": "Willis", "DefaultMessage": "Office Manager/Willis Sam" } }
现在,每个元素message_defaluts具有相同的结构(假设一个POJO称为MessageDefault.java)。那么我怎么能把所有东西都message defaults当作一个List<MessageDefault>??呢?
message_defaluts
message defaults
List<MessageDefault>
我正在使用gson进行解析。我也不能更改JSON响应。
编辑::
MessageDefault.java
public class MessageDefault{ private String defaultMessage; private String firstName; private String lastName; private String mI; private int msgTypeId; private int staffId; private String staffName; public String getDefaultMessage(){ return this.defaultMessage; } public void setDefaultMessage(String defaultMessage){ this.defaultMessage = defaultMessage; } public String getFirstName(){ return this.firstName; } public void setFirstName(String firstName){ this.firstName = firstName; } public String getLastName(){ return this.lastName; } public void setLastName(String lastName){ this.lastName = lastName; } public String getMI(){ return this.mI; } public void setMI(String mI){ this.mI = mI; } public int getMsgTypeId(){ return this.msgTypeId; } public void setMsgTypeId(int msgTypeId){ this.msgTypeId = msgTypeId; } public int getStaffId(){ return this.staffId; } public void setStaffId(int staffId){ this.staffId = staffId; } public String getStaffName(){ return this.staffName; } public void setStaffName(String staffName){ this.staffName = staffName; } }
它只是一切的结构message_defualts。但是在JSON中,的每个子项message_defualts都有不同的名称,例如LabResultsRequestDefaultMessage, ReferralRequestDefaultMessage etcPOJO MessageDefault.java中所反映的名称。但是从JSON我想要它们的列表。
message_defualts
LabResultsRequestDefaultMessage, ReferralRequestDefaultMessage etc
谢谢。
您可以执行以下操作而无需更改json结构。
Type mapType = new TypeToken<Map<String, MessageDefault>>() {}.getType(); Map<String, MessageDefault> messagesMap = gson.fromJson(json, mapType); List<MessageDefault> messages = new ArrayList<MessageDefault>(messagesMap.values());