首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jackson2多到多反序列化

Jackson2多到多反序列化
EN

Stack Overflow用户
提问于 2013-08-01 07:33:11
回答 3查看 5.9K关注 0票数 2

我有两个类事件和用户有很多到许多关系。

代码语言:javascript
复制
public class Event {

    private int id;

  private List<Users> users;
}

public class User {
        private int id;

      private List<Event> events;
}

我读过@JsonIdentityInfo注释,这应该是有帮助的,但我看不到这方面的一个例子。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-08-01 17:26:55

您可以在两个类中使用@JsonIdentityInfo UserEvent

代码语言:javascript
复制
import java.util.List;

import com.fasterxml.jackson.annotation.JsonIdentityInfo;
import com.fasterxml.jackson.annotation.ObjectIdGenerators;

@JsonIdentityInfo(generator = ObjectIdGenerators.UUIDGenerator.class, property="@UUID")
public class User
{
    private int id;
    private List<Event> events;

    // Getters and setters
}

..。和

代码语言:javascript
复制
import java.util.List;

import com.fasterxml.jackson.annotation.JsonIdentityInfo;
import com.fasterxml.jackson.annotation.ObjectIdGenerators;

@JsonIdentityInfo(generator = ObjectIdGenerators.UUIDGenerator.class, property="@UUID")
public class Event
{
    private int id;
    private List<User> users;

    // Getters and setters
}

您可以酌情使用任何ObjectIdGenerator。现在,与许多映射对应的对象的序列化和反序列化将获得成功:

代码语言:javascript
复制
public static void main(String[] args) throws IOException
{
    ObjectMapper objectMapper = new ObjectMapper();
    objectMapper.configure(SerializationFeature.INDENT_OUTPUT, true);

    Event event1 = new Event();
    event1.setId(1);
    Event event2 = new Event();
    event2.setId(2);

    User user = new User();
    user.setId(10);

    event1.setUsers(Arrays.asList(user));
    event2.setUsers(Arrays.asList(user));
    user.setEvents(Arrays.asList(event1, event2));

    String json = objectMapper.writeValueAsString(user);
    System.out.println(json);

    User deserializedUser = objectMapper.readValue(json, User.class);
    System.out.println(deserializedUser);
}

希望这能有所帮助。

票数 5
EN

Stack Overflow用户

发布于 2014-10-28 14:27:58

我来这里“谷歌”,所以我用@Jackall's anwers,有一点国防部

代码语言:javascript
复制
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "id")

这是因为我的DTO有一个名为"id“的属性,就像问题中的事件和用户类一样。

票数 1
EN

Stack Overflow用户

发布于 2014-02-04 22:22:04

尝试在JsonIdentityInfo注释中使用"scope“属性:

代码语言:javascript
复制
@JsonIdentityInfo(
    generator = ObjectIdGenerators.UUIDGenerator.class,   
    property="@UUID",
    scope=YourPojo.class
)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17987789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档