当前位置: 首页 > 知识库问答 >
问题:

Jackson ObjectMapper-指定对象属性的序列化顺序

江新
2023-03-14

我正在实现一个RESTful web服务,其中用户必须在请求的同时发送一个签名的验证令牌,这样我就可以确保请求没有被中间人篡改。我当前的实现如下所示。

验证令牌是一个VerifData对象,序列化为字符串,然后进行散列和加密。

class VerifData {
    int prop1;
    int prop2;
}
VerfiData verifData = new VerifData(12345, 67890);
ObjectMapper mapper = new ObjectMapper();
String verifCodeGenerated = mapper.writeValueAsString(verifData);
{"prop1":12345,"prop2":67890}
{"prop2":67890,"prop1":12345}

有办法绕过这件事吗?我可以指定ObjectMapper要映射的属性的顺序吗(像按升序)?或者是否有任何其他方法可以最好地实现此验证步骤。客户端和服务器实现都是我开发的。我使用Java安全API进行签名和验证。

共有1个答案

鲁波光
2023-03-14

从Jackson注释文档中可以看到:

// 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)
 类似资料:
  • 我正在实现一个RESTful web服务,其中用户必须在请求的同时发送一个签名的验证令牌,这样我就可以确保请求没有被中间人篡改。我当前的实现如下所示。 验证令牌是一个VerifData对象,序列化为字符串,然后进行散列和加密。 有办法绕过这件事吗?我可以指定ObjectMapper要映射的属性的顺序吗(像按升序)?或者是否有任何其他方法可以最好地实现此验证步骤。客户端和服务器实现都是我开发的。我使

  • 我们有一张350列的桌子。pojo类被生成,getter命令被打乱。试图使用jackson提供的csvmapper,但它会根据getter顺序生成csv@JsonPropertyOrder也不适合使用,因为有很多列。我们用xml维护列顺序,并且可以在运行时生成字段顺序数组。我们可以在运行时重写以提供属性排序的字段名数组吗?我们可以使用注释内省器进行自定义吗?

  • 问题内容: 我想按对象的指定属性对对象列表进行排序,并希望选择用于排序的属性。例: 这个想法很简单: 我将要排序的所有值都放入一个数组中,并创建了一个映射,将这些值映射回它们的对象。对这个数组进行排序后,我将映射到这些值的对象按相同的顺序放入一个新数组中,然后按这些值对它们进行排序。这些值只是使用Object类型创建的,因此我可以按多种类型(不仅仅是示例中的Strings)进行排序。 除非您有两个

  • 我需要反序列化以下json: 将它的< code>id属性设置为< code>foo_id json属性。 我需要在自定义反序列化程序中执行此操作。实现这一点最简单的方法是什么? 我想以某种方式将json“转换”为 然后将此委托给杰克逊。 在本例中,对象的类型为Foo,但其他对象可能不属于此类。另外,在本例中,json是一个数字,但如果它也是一个字符串,我希望支持。所以,我需要一种通用的方法来做到

  • 我想优化要在线发送的json数据。我的代码中有三个模型。这些是客户、发票和明细。 客户类别 发票类 特定类别 我的测试代码: 这里我想要的是通过序列化发票来避免冗余,以便生成的json紧凑。这应该通过只发送invoiceId属性值而不是整个Invoice对象json来实现。 测试代码打印的内容: 我希望它打印的内容: 数据是用于生成getter和setter的lombok注释。 我试图添加注释到发

  • 我对班级结构有如下建议: @JsonTypeInfo(use=JsonTypeInfo.Id.NAME,include=JsonTypeInfo.As.PROPERTY,PROPERTY=“type”) 上面的类被序列化为json元素数组,但是当我反序列化它们时,我想要如下结构: 公共阶层结构{ 是否可以将testA、testB和testC类型的元素数组转换为FlatStructure类的属性?