![](/img/trans.png)
[英]How to parse JSON array using Jersey Rest Webservices and Java
[英]Can not parse JSON in REST webservices
我已經開發了可以使用JAXB框架解析XML有效負載的Web服務。 現在,我需要擴展此Web服務,以JSON格式解析相同的有效負載。 以下適用於XML有效負載的邏輯不適用於JSON有效負載。 感謝您的投入。
XML有效載荷
<?xml version="1.0" encoding="UTF-8" ?>
<LinkUserToGroup>
<groups>
<group>
<id>dbb8</id>
</group>
<group>
<id>ce50</id>
</group>
</groups>
</LinkUserToGroup>
JSON有效負載(無效)
{
"LinkUserToGroup": {
"groups": {
"group": [
{ "id": "dbb8" },
{ "id": "ce50" }
]
}
}
}
POJO類
LinkUserToGroup.java
@XmlRootElement(name = "LinkUserToGroup")
@XmlAccessorType (XmlAccessType.FIELD)
@JsonIgnoreProperties(ignoreUnknown = true)
public class LinkUserToGroup {
@JsonProperty("groups")
@XmlElement(name = "groups")
private List<Groups> groupsList;
public List<Groups> getGroupsList() {
return groupsList;
}
public void setGroupsList(List<Groups> groupsList) {
this.groupsList = groupsList;
}
}
Groups.java
@XmlRootElement(name = "groups")
@XmlAccessorType (XmlAccessType.FIELD)
public class Groups {
@XmlElement(name = "group")
@JsonProperty("group")
private List<GroupVO> groups;
public List<GroupVO> getGroups() {
return groups;
}
public void setGroups(List<GroupVO> groups) {
this.groups = groups;
}
}
GroupVO.java
@XmlRootElement(name = "group")
@XmlAccessorType (XmlAccessType.FIELD)
public class GroupVO {
@JsonProperty("id")
@XmlElement(name = "id")
private String id;
public String getID() {
return id;
}
public void setURI(String id) {
this.id = id;
}
}
service.java
@POST
@Path("/{id}/groups")
@Consumes({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
@Produces({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
public Response addGroupToUser(@PathParam("id") String key, LinkUserToGroup grpList) {
List<Groups> groups = grpList.getGroupsList();
List<GroupVO> groupVO;
for (Groups gr : groups) {
groupVO = gr.getGroups();
for(GroupVO g : groupVO){
eachGroupID = g.getID();
logger.debug(" Current Group is::"+eachGroupID);
}
}
...
...
}
我在(Groups gr:groups)處獲得空指針異常
堆棧跟蹤
May 20, 2017 10:43:42 AM com.sun.jersey.spi.container.ContainerResponse mapMappableContainerException
SEVERE: The RuntimeException could not be mapped to a response, re-throwing to the HTTP container
java.lang.NullPointerException
at com.services.UserGroupWSOperations.addGroupToUser(UserGroupWSOperations.java:74)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)
該項目的Java構建路徑如下
您發送的JSON數據中沒有可用的組列表,這就是grpList.getGroupsList()
返回null
的原因。 根據LinkUserToGroup
的POJO定義,鍵groups
應為JSON數組。 請嘗試使用以下JSON數據。
{
"groups": [
{
"group": [
{
"id": "dbb8"
},
{
"id": "ce50"
}
]
}
]
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.