PostgresJsonbColumn如何维护json对象的参数顺序



我有一个用例,我生成了一个最初用java创建的JSON对象的哈希,并将该哈希和JSON对象分别作为String和jsonb插入Postgres表中。

我需要定期验证最初保存的JSON对象。在此期间,我从存储在jsonb中的Postgres中获取JSON对象,并从中生成一个哈希,并将其与最初生成的哈希进行比较。现在两者都不一样了。

原因是最初当数据被插入时,JSON对象中参数的顺序在检索时不同,顺序也不同。最终为相同的数据生成2个不同的哈希。

请提出建议。

每个JSON:使用json类型而不是jsonb

因为json类型存储了输入文本的精确副本,所以它将在标记之间保留语义上不重要的空白,以及json对象中键的顺序。此外,如果值中的JSON对象多次包含相同的键,则会保留所有的键/值对。(处理函数将最后一个值视为有效值。(相比之下,jsonb不保留空白,不保留对象键的顺序,也不保留重复的对象键。如果在输入中指定了重复的键,则只保留最后一个值。

最新更新