【问题标题】:JSON Parsing with JAX-RS使用 JAX-RS 进行 JSON 解析
【发布时间】:2012-03-24 17:40:52
【问题描述】:

我正在使用 JAX-RS 构建一个 REST API。我有使用 JSON 元素的 POST:

元素是一个类:

@XmlRootElement
public class EventData{
   public long start;
   public long end;
   public Collection<Person> persons;
}

我有这样的方法:

@POST
@Consumes({MediaType.APPLICATION_JSON})
public Response transactionRequest(EventData insert){
....}

如果我发布 EventData 的 JSON 字符串,它可以正常工作,但如果我切换到:

@POST
@Consumes({MediaType.APPLICATION_JSON})
public Response transactionRequest(ArrayList<EventData> insert){
....}

并发送一个像 "{eventData:[{start:x,end:y,persons:[....]}]" 这样的 JSON 字符串,它将构建 ArrayList 及其 EventData 对象,但 EventData 对象变量是 null

有人可以帮忙吗?

【问题讨论】:

    标签: java json rest jax-rs


    【解决方案1】:

    您需要发送一个 JSON 数组,其中包含代表您的 EventData 类的 JSON 对象。

    您提供的示例不是这样的 JSON 数组,而是一个 JSON 对象,它具有一个名为“eventData”的属性,其中包含一个 JSON 数组。

    尝试这样的事情(基于您的 EventData 课程):

    [
      { "start":1, "end":2, "persons":[] },
      { "start":3, "end":4, "persons":[] }
    ]
    

    请注意,没有提及您的 EventData 类,因为 JSON 没有命名类型的概念——它只是对象和对象数组;只有对象的属性才有名字。

    【讨论】:

    • com.sun.jersey.json.impl.reader.JsonFormatException:需要冒号而不是“]”
    • 我的答案中的 JSON 是一个非常粗略的示例,我建议使用 JAX-RS 方法的输出,该方法返回 List 和一些虚拟项目。我会在一分钟内给你的EventData 类写一些有效的 JSON :)
    • com.sun.jersey.json.impl.reader.JsonFormatException:需要冒号而不是“,”
    • 嗯,您如何将 JSON 发送到您的 JAX-RS 服务?这看起来像是在途中丢失了一些东西。
    • 是的,您好,有一个 android 应用程序可以将 JSON 发布到 JAX-RS 服务.....如果它是 POST 中的单个 EventData 对象,则效果很好...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多