一个对象带有 api,它有 org.json.simple.JSONObject。我从数据库中获取数据并将其转换为 JSONObject。如果将两个对象都转换为字符串并使用等号进行比较,则结果将为正(真)。我@EqualsAndHashCode(of = {"myfield"})
从龙目岛使用。
但如果我这样做:
MyJsonObject.equals(MyJsonObject2)
我会得到一个否定的结果。
通过经验测试,我发现如果 JSON 由 2 个键值对组成,equals 方法适用于它们。但是如果你用三对值比较相同的对象,那么 equals 总是返回 false。
如果我尝试转换为 HashMap 并通过 equals 进行比较,也会出现同样的情况。在这里,我挂在类上的注释与它无关。如果两个绝对相同的对象有 2 个对,而如果有 3 个,那么它们怎么可能是等价的呢?我不明白的东西?
如何比较两个 JSONObject?
问题是,当我从数据库接收对象时,其键的值之一,例如“IntValue”:1 - 被视为 Long 类型(1 - Long)。当我接受请求时,相同的单位被认为是 Int 类型。由于类型不同,虽然数值相同,但物体并没有受伤。结论:在这些地方,有必要查看类型。