【问题标题】:How can I return JSON object list with Jersey/Jackson如何使用 Jersey/Jackson 返回 JSON 对象列表
【发布时间】:2017-02-07 03:21:07
【问题描述】:

我正在使用 Jersey/Jackson 将对象返回到 JSON。 我可以为单个对象成功返回它,但我不能为列表返回。

如何将列表对象序列化返回到 JSON

这是我的例子

这样的依赖:

 <dependencies>

    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-bundle</artifactId>
        <version>1.19</version>
    </dependency>
    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-server</artifactId>
        <version>1.19</version>
    </dependency>
    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-core</artifactId>
        <version>1.19</version>
    </dependency>
    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-json</artifactId>
        <version>1.19</version>
    </dependency>


</dependencies>

我的模型是这样的:

public class Person {


private String name;
private String surname;
private int age;
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public String getSurname() {
    return surname;
}
public void setSurname(String surname) {
    this.surname = surname;
}
public int getAge() {
    return age;
}
public void setAge(int age) {
    this.age = age;
}
public Person(String name, String surname, int age) {
    super();
    this.name = name;
    this.surname = surname;
    this.age = age;
}
public Person() {
    super();
}


@Override
public String toString() {


    return "Person [name="+ name +", surname="+ surname +", age="+ age +"]";
}

我的服务是这样的:

@Path("/getperson")
@GET
@Produces(MediaType.APPLICATION_JSON)
public Person getPerson(){

    Person person = new Person(name, surname, age);



    return person;

}


@Path("/getpersons")
@GET
@Produces(MediaType.APPLICATION_JSON)
public List<Person> getPersons(){

    Person p1 = new Person("gosling", "james", 55);
    Person p2 = new Person("torvalds", "linus", 48);
    Person p3 = new Person("riche", "dennis", 60);

    List<Person> persons = new ArrayList<Person>();
    persons.add(p1);
    persons.add(p2);
    persons.add(p3);

    return persons;


}

getPerson() 运行良好,但 getpersons() 返回为空。

【问题讨论】:

  • /getpersons 应该获取 person 列表。你不应该使用 /getPersons

标签: json list jersey jackson


【解决方案1】:

在我的场景中,我使用 glassfish jersey 依赖项:

    <dependency>
        <groupId>org.glassfish.jersey.core</groupId>
        <artifactId>jersey-server</artifactId>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-multipart</artifactId>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-json-jackson</artifactId>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.containers</groupId>
        <artifactId>jersey-container-servlet</artifactId>
    </dependency>

并且列表确实会返回几乎就像我希望使用 0 配置或映射一样。 我在您的代码中没有发现任何特殊问题。

【讨论】:

    猜你喜欢
    • 2015-06-02
    • 2020-02-20
    • 1970-01-01
    • 2020-10-06
    • 2013-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    相关资源
    最近更新 更多