首页 > 解决方案 > 如何使用要保留元素顺序的空手道比较两个 json 对象?

问题描述

我需要比较在比较时订单保留的 2 个 JSON 对象。由于空手道比赛忽略了元素的顺序,我只是想知道在空手道中是否有办法做到这一点。

标签: karate

解决方案


不是直接的,它从来不需要,因为 JSON 键可以是任何顺序,比如Map.

但是您可以在转换为(标准化)字符串后进行完全匹配:

* def foo = { a: 1, b: 2 }
* string str1 = foo
* string str2 = { "a": 1, "b": 2 }
* assert str1 == str2

您还可以随时获取键/值的有序列表:

* def vals = karate.valuesOf(foo)
* match vals == [1, 2]
* def keys = karate.keysOf(foo)
* match keys == ['a', 'b']

推荐阅读