【问题标题】:Best way to parse bean from JSON with Jersey REST Service使用 Jersey REST 服务从 JSON 解析 bean 的最佳方法
【发布时间】:2017-07-11 13:29:16
【问题描述】:

我有一个 Java bean 定义如下:

public class Person {

    private String name;
    private String surname;

    public Person(String name, String surname) {
        this.name = name;
        this.surname = surname;
    }

    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSurname() {
        return this.surname;
    }

    public void setSurname(String surname) {
        this.surname = surname;
    }
}

我已经编写了这个简单的 REST 方法,如果我通过 POST:

{ "name": "John", "surname": "Doe"}

它有效。

import com.google.gson.Gson;

@Path("/person")
public class PersonRestService {
    @POST
    @Consumes(MediaType.APPLICATION_JSON)
    public Response getMsg(String inputJsonObj) {

        Persona p = new Gson().fromJson(inputJsonObj, Person.class);

        System.out.println("Name: " + p.getName());
        System.out.println("Surname: " + p.getSurname());

        return Response.status(200).build();
    }
}

但是为什么我必须接受一个字符串作为方法的输入字段呢?

我尝试在 getMsg 方法中接受一个 Person 对象,但仍然像这样传递一个 JSONObject:

{ "name": "John", "surname": "Doe"}

但我得到了 HTTP 状态 415 – 不支持的媒体类型

在方法中直接接收 Person 对象而不用 Gson 解析它的最简单方法是什么?

提前致谢:)

【问题讨论】:

    标签: json rest post gson jersey-2.0


    【解决方案1】:

    但我收到了 HTTP 状态 415 – 不支持的媒体类型。

    You need a JSON Provider。还要确保你的 POJO 有一个默认的构造函数。

    如果您使用的是 Maven,则只需添加以下依赖项

    <dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-json-jackson</artifactId>
        <version>${jersey2.version}</version>
    </dependency>
    

    如果您手动添加 jar,请查看 this post

    【讨论】:

    • 非常感谢,它有效! JSON Provider 丢失 :) 为什么不使用 Jersey JSON Jackson (2.x) 的 jersey-media-json-jackson
    • 对不起,你应该使用那个(我修好了)。我刚刚从链接中抓取了第一个。我忘了他们对 Jackson 1 有依赖。
    猜你喜欢
    • 2012-03-27
    • 1970-01-01
    • 1970-01-01
    • 2012-06-21
    • 2015-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多