【问题标题】:Java - Mapping dynamic JSON to DTOJava - 将动态 JSON 映射到 DTO
【发布时间】:2017-08-21 16:54:39
【问题描述】:

我无法使用以下有效负载将 json 数据映射到 DTO

"wigData": {
        "wig": {
            "0": {
                "parentWig": "",
                "wigName": "testing wig 1",
                "wigStart": "01/08/2017",
                "wigFromx": "1",
                "wigToy": "123",
                "wigEnd": "31/08/2017",
                "wigAchievementType": "number"
            },
            "1": {
                "parentWig": "",
                "wigName": "testing wig 2",
                "wigStart": "01/08/2017",
                "wigFromx": "1",
                "wigToy": "123",
                "wigEnd": "31/08/2017",
                "wigAchievementType": "number"
            }
        }
    }

DTO 未能映射 wig 的有效负载,因为它正在序列化来自 jquery json serializable 的数据

我已经为这样的有效载荷创建了 DTO,

class WigData {
    private Wigs wigs;
// setter getter
}

class Wigs {
    private List<Wig> index;
// setter getter
}

class Wig {
    private String parentWig;
    private String wigName;
    private Date wigStart;
    private Date wigFromx;
    private BigDecimal wigToy;
    private String wigAchievementType;
// setter getter
}

这是此 DTO 的输出

wigData: {
  wigs: null
}

但是没有运气,有人可以帮忙解决这个问题吗?

因为现在无法更改有效负载

【问题讨论】:

  • 你用什么库来反序列化 json?杰克逊?你得到什么错误?顺便说一句,您错过了来自Wig 对象的wigEnd 字段
  • 谢谢! @amicoderozer,我已经修复了那个小姐。是的,我正在使用 Jakson,我没有收到任何错误,但响应未映射 DTO。请检查我的更新答案先生

标签: java spring-mvc dto


【解决方案1】:

查看更多关于 JSON 数组的信息。

试试下面的:

"wigData": {
    "wig": [{
            "parentWig": "",
            "wigName": "testing wig 1",
            "wigStart": "01/08/2017",
            "wigFromx": "1",
            "wigToy": "123",
            "wigEnd": "31/08/2017",
            "wigAchievementType": "number"
        }, {
            "parentWig": "",
            "wigName": "testing wig 2",
            "wigStart": "01/08/2017",
            "wigFromx": "1",
            "wigToy": "123",
            "wigEnd": "31/08/2017",
            "wigAchievementType": "number"
        }
    ]
}

class WigData {
    private List<Wig> wig;
    // setter getter
}

class Wig {
    private String parentWig;
    private String wigName;
    private Date wigStart;
    private Date wigFromx;
    private BigDecimal wigToy;
    private String wigAchievementType;
// setter getter
}

【讨论】:

  • 好吧,先生,这在我的上下文中是不可能的,我正在使用 Json Serialize 库,它映射了我的问题中的有效负载。有什么提示吗?
  • 我会检查 jquery json 序列化并给出另一个答案。但是在我发布的后端映射工作。我将研究 jquery json 序列化并在几个小时内回复您。
  • 使用 var json = $('#my-profile').serializeJSON({useIntKeysAsArrayIndex: true});
  • 在序列化 json 时使用 {useIntKeysAsArrayIndex: true}。然后使用我提供的解决方案它应该可以工作,因为它会转换我在答案中给出的数组。
猜你喜欢
  • 1970-01-01
  • 2018-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-04
  • 2013-04-16
相关资源
最近更新 更多