java – Jackson ObjectMapper – 指定对象属性的序列化顺序
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – Jackson ObjectMapper – 指定对象属性的序列化顺序,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1214字,纯文字阅读大概需要2分钟。
内容图文
![java – Jackson ObjectMapper – 指定对象属性的序列化顺序](/upload/InfoBanner/zyjiaocheng/714/b7a61e774c434957aa9e1da6ce281160.jpg)
我正在实现一个RESTful Web服务,用户必须发送一个签名的验证令牌以及请求,这样我才能确保请求没有被中间人篡改.我目前的实施如下.
验证令牌是序列化为String的VerifData对象,然后进行散列和加密.
class VerifData {
int prop1;
int prop2;
}
在我的服务中,我将要序列化的数据放入VerifData实例中,然后使用Jackson ObjectMapper对其进行序列化,并将其与验证令牌一起传递给验证引擎.
VerfiData verifData = new VerifData(12345, 67890);
ObjectMapper mapper = new ObjectMapper();
String verifCodeGenerated = mapper.writeValueAsString(verifData);
但似乎每次启动应用程序容器时,ObjectMapper映射到字符串的属性顺序都会发生变化.
例如:有一次
{"prop1":12345,"prop2":67890}
它将是另一次
{"prop2":67890,"prop1":12345}
因此,如果客户端已将VerifData实例序列化为第一个String,则即使它是正确的,也有50%的可能性失败.
有办法解决这个问题吗?我可以通过ObjectMapper指定要映射的属性的顺序(如升序)吗?或者是否有其他方法可以最好地实施此验证步骤.客户端和服务器实现都是由我开发的.我使用Java Security API进行签名和验证.
解决方法:
从Jackson Annotations documentation:
// ensure that "id" and "name" are output before other properties
@JsonPropertyOrder({ "id", "name" })
// order any properties that don't have explicit setting using alphabetic order
@JsonPropertyOrder(alphabetic=true)
内容总结
以上是互联网集市为您收集整理的java – Jackson ObjectMapper – 指定对象属性的序列化顺序全部内容,希望文章能够帮你解决java – Jackson ObjectMapper – 指定对象属性的序列化顺序所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。