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

如何在Java中对对象的属性进行排序

宗政兴发
2023-03-14

你知道为什么在对我的应用程序进行去压缩时,我的地址对象的属性顺序会发生变化吗?我需要检查它存储在数据库中的地址是否等于来自前端的地址。我正在使用对象映射器将对象转换为文本,以便我可以比较2个字符串,但由于这种情况,我总是得到假,因为顺序发生了变化,正如您在下面的图片中看到的那样。

共有2个答案

孙岳
2023-03-14

您可以将字符串解析JsonNode并对它们进行比较。Jackson为所有节点类型提供了equals(Object o)的覆盖。

JsonNode actualNode = JsonMapper.PROVISIONING.readTree(actualJson);
JsonNode expectedNode = JsonMapper.PROVISIONING.readTree(expectedJson));
boolean matches = actualNode.equals(expectedNode);

本指南也应该有所帮助。

另一个选项是在自定义类中提供equals()的实现,如注释中所述。

令狐和裕
2023-03-14

使用新的ObjectMapper。writeValueAsString()应按预期顺序为您提供字段。正如@Federico klez Culloca所言,您应该使用对象本身进行比较。您应该从地址构造一个地址对象。getAddressString()或直接使用a.equals()将地址与a进行比较。

 类似资料:
  • 问题内容: 我有一个对象,有时我需要添加其他对象。 我想在此之后进行排序。我不想获取所有键和值,将它们与之排序,然后将其全部放入一个新对象。有没有更好的办法? 问题答案: 不,扩展不能为键或值定义可预测的排序顺序。 您可以尝试将所有值转储到诸如之类的东西中,这将对键施加自然排序。

  • 我有一个对象,有时需要向其添加其他。 我想在此之后对进行排序。我不想获取所有键和值,用对它们进行排序,然后将它们全部放入一个新对象。有更好的办法吗?

  • 问题内容: 我已经寻找了一段时间,想要一种对JSON对象进行排序的方法,如下所示: 并按字母顺序按值“ COMMERCIALNAME_E”得到: 我找不到任何可以做到这一点的代码。谁能给我些帮助? 问题答案: 将这些JSON解析为“对象集合”,然后使用比较器通过您喜欢的字段对其进行排序。 使用GSON将其解析为对象集合 例: 如果要从Object创建JSON。

  • 问题内容: 我的数组不包含任何字符串。但是它包含对象引用。每个对象引用都通过toString方法返回名称,id,作者和发布者。 现在,我需要按名称对对象数组进行排序。我知道如何排序,但是我不知道如何从对象中提取名称并对它们进行排序。 问题答案: 你有两种方法可以使用Arrays实用程序类 实现一个Comparator并将数组与比较器一起传递给sort方法,该方法将其作为第二个参数。 在对象所属的类

  • 问题内容: 和骗局。如何按升序排序,然后按?有人可以帮忙吗?我知道在中具有通用算法和重载运算符,但是我是Java新手。 问题答案: 使实现或在单独的类中实现。然后致电: 要么 通常,如果有一个单一的“自然”排序顺序,则实施是个好主意…否则(如果你碰巧想要按特定顺序进行排序,但可能同样容易地希望使用另一个顺序),则最好实现。老实说,这种特殊情况可能会发生任何一种……但是我可能会坚持使用更灵活的选择。

  • 问题内容: 如果我有一个JavaScript对象,例如: 有没有一种方法可以基于值对属性进行排序?这样我最终 问题答案: 将它们移动到一个数组,对该数组进行排序,然后将其用于您的目的。这是一个解决方案: 拥有数组后,您可以按自己喜欢的顺序从数组中重建对象,从而完全实现了您打算要做的事情。在我所知道的所有浏览器中都可以使用,但这取决于实现的怪癖,并且可能随时中断。您永远不应假设JavaScript对