【问题标题】:Deserializing JSON object反序列化 JSON 对象
【发布时间】:2014-05-05 13:28:19
【问题描述】:

我在反序列化 JSON 对象时遇到问题。该对象包含一个被反序列化为 Map 的集合,这是默认设置。我需要它反序列化为一个集合。我的代码如下:

TaskDetail.java

@ManyToMany
private Set<RoleDetail> roleDetails = new HashSet<RoleDetail>();

public String toJson() {
    return new JSONSerializer().exclude("*.class").include("roleDetails").serialize(this);
}

RoleDetail.java

@ElementCollection
@Enumerated(EnumType.STRING)
private Set<RoleFunction> roleFunctions = new HashSet<RoleFunction>();

public String toJson() {
    return new JSONSerializer().exclude("*.class").include("roleFunctions").serialize(this);
}

从前端,我提交表单中的数据,控制器接收到的数据格式如下:

{"name":"Clean Shelves","description":"Clean all shelves in the store","roleDetails":{"description":"A person that counts stock","id":1,"name":"Stock Counter","version":0}}

我需要将 roleDetails 对象反序列化为 HashSet。我怎样才能使用 JsonDeserializer 来做到这一点?我假设它在 RoleDetail.java 中是这样的:

public static RoleDetail fromJsonToRoleDetail(String json) {
    return new JSONDeserializer<RoleDetail>().use(null, RoleDetail.class).use("roleDetail.values", HashSet.class).deserialize(json);
}

或者我是否也必须在 TaskDetail.java 中编写类似的代码?

【问题讨论】:

    标签: java json spring-roo flexjson


    【解决方案1】:

    你的 roleDetails 应该是一个对象数组,而不是一个对象。

    你应该有类似的东西:

    {"name":"Clean Shelves","description":"Clean all shelves in the store","roleDetails":[{"description":"A person that counts stock","id":1,"name":"Stock Counter","version":0}]}
    

    【讨论】:

      猜你喜欢
      • 2015-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多