![](/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.