Karate 将数组中任何json对象的键值的类型从string更改为float/double

Karate 将数组中任何json对象的键值的类型从string更改为float/double,karate,Karate,我有一个json,如下所示: * def first = [{"country":"X","code":"XY","cityName":"XYZN","city":"XYZ","timezone":"XYZT","latitude":"57.0928",&qu

我有一个json,如下所示:

* def first = [{"country":"X","code":"XY","cityName":"XYZN","city":"XYZ","timezone":"XYZT","latitude":"57.0928","name":"XYZN","longitude":"9.8492"}, {"country":"A","code":"AB","cityName":"ABCN","city":"ABC","timezone":"ABCT","latitude":"1.234","name":"ABCN","longitude":"29.8482"}]

def second = [{"country":"X","code":"XY","cityName":"XYZN","city":"XYZ","timezone":"XYZT","latitude":57.0928,"name":"XYZN","longitude":9.8492}, {"country":"A","code":"AB","cityName":"ABCN","city":"ABC","timezone":"ABCT","latitude":1.234,"name":"ABCN","longitude":29.8482}]
我想比较这两者,但它失败了,因为第一个json将经度和纬度作为字符串,而第二个json将它们作为数字

另外,我不想更改第二个json,必须按原样使用

请建议如何先将字符串类型更改为数字? 我试过了


但是对于对象数组,它不起作用。

示例代码:

Feature:

Scenario:
    * def first = [{"country":"X","code":"XY","cityName":"XYZN","city":"XYZ","timezone":"XYZT","latitude":"57.0928","name":"XYZN","longitude":"9.8492"}, {"country":"A","code":"AB","cityName":"ABCN","city":"ABC","timezone":"ABCT","latitude":"1.234","name":"ABCN","longitude":"29.8482"}]

    * def second = [{"country":"X","code":"XY","cityName":"XYZN","city":"XYZ","timezone":"XYZT","latitude":57.0928,"name":"XYZN","longitude":9.8492}, {"country":"A","code":"AB","cityName":"ABCN","city":"ABC","timezone":"ABCT","latitude":1.234,"name":"ABCN","longitude":29.8482}]

    * def first_formatted = []
    * def fun = function(x){x.latitude = Number(x.latitude); x.longitude = Number(x.longitude); karate.appendTo(first_formatted, x); }
    * karate.forEach(first, fun)
    * print first_formatted
    * match first_formatted == second

还有,有没有一种方法可以让我们在if条件下编写上面的全部代码@Neodawn@user1873274