gpt4 book ai didi

java - 在 Jersey 中解析复杂的 JSON 类型

转载 作者:太空宇宙 更新时间:2023-11-04 14:49:05 26 4
gpt4 key购买 nike

我正在使用 Jersey 创建一个采用稍微复杂的 JSON 结构的 servlet:

[
{
"name": "bob",
"events": [
{
"type": "a",
"value": "b"
},
{
"type": "x",
"value": "y"
}
]
},
{
"name": "alice",
"events": [
{
"type": "one",
"value": "two"
},
{
"type": "three",
"value": "four"
}
]
}
]

我有以下数据类:

public class Read
{
private String name;
private ArrayList<Event> events;
// Getters & Setters
}

public class Event
{
private String type;
private String value;
// Getters & Setters
}

我希望能够接受 JSON 并将其放入 ArrayList<Read> 中目的。我有以下代码:

@Path("/postreads")
@Consumes(MediaType.APPLICATION_JSON)
public class PostReads
{
@POST
@Path("/batch")
public Response postReads(ArrayList<Read> reads)
{
for (Read read : reads)
{
System.out.println(read.toString());
}

return Response.status(200).entity("Success.").build();
}
}

当我让它做一个简单的对象( Event ,只有两个 String 属性)时,它工作得很好。但增加了 ArrayList 的复杂性杀了它。有没有办法自动解析该 JSON,还是需要手动解析?目前这是一个非常开放的项目,因此如果我需要添加额外的库,我可以。

我在 Eclipse 控制台上遇到的错误:

Jun 03, 2014 2:44:01 PM com.sun.jersey.spi.container.ContainerRequest getEntity
SEVERE: A message body reader for Java class java.util.ArrayList, and Java type java.util.ArrayList<com.project.postevents.Event>, and MIME media type application/json was not found.
The registered message body readers compatible with the MIME media type are:
application/json ->
com.sun.jersey.json.impl.provider.entity.JSONJAXBElementProvider$App
com.sun.jersey.json.impl.provider.entity.JSONRootElementProvider$App
com.sun.jersey.json.impl.provider.entity.JSONListElementProvider$App
*/* ->
com.sun.jersey.core.impl.provider.entity.FormProvider
com.sun.jersey.core.impl.provider.entity.StringProvider
com.sun.jersey.core.impl.provider.entity.ByteArrayProvider
com.sun.jersey.core.impl.provider.entity.FileProvider
com.sun.jersey.core.impl.provider.entity.InputStreamProvider
com.sun.jersey.core.impl.provider.entity.DataSourceProvider
com.sun.jersey.core.impl.provider.entity.XMLJAXBElementProvider$General
com.sun.jersey.core.impl.provider.entity.ReaderProvider
com.sun.jersey.core.impl.provider.entity.DocumentProvider
com.sun.jersey.core.impl.provider.entity.SourceProvider$StreamSourceReader
com.sun.jersey.core.impl.provider.entity.SourceProvider$SAXSourceReader
com.sun.jersey.core.impl.provider.entity.SourceProvider$DOMSourceReader
com.sun.jersey.json.impl.provider.entity.JSONJAXBElementProvider$General
com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider$General
com.sun.jersey.core.impl.provider.entity.XMLListElementProvider$General
com.sun.jersey.core.impl.provider.entity.XMLRootObjectProvider$General
com.sun.jersey.core.impl.provider.entity.EntityHolderReader
com.sun.jersey.json.impl.provider.entity.JSONRootElementProvider$General
com.sun.jersey.json.impl.provider.entity.JSONListElementProvider$General

编辑:方括号后面的逗号是一个拼写错误。传入的 JSON 进行验证。

最佳答案

您遇到的错误是因为您的 JSON 文件无效。方括号后面的逗号不应该出现在此处。

Error: Parse error on line 13:
... }
],
},
{
"name":
--------------------^
Expecting 'STRING', got '}'

关于java - 在 Jersey 中解析复杂的 JSON 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24025793/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com