空手道:在请求中传递 java long

Karate: passing java long as long in request

下面是我的简化示例

Feature: Get document

  Background:
        * url 'some_url'
        * def basepath = 'some_path'
        
  Scenario: get document

    Given path basepath
    And header Accept = 'application/json'
    And request { 'string_arg': '#(name)', 'id': #(id) }
    When method post
    Then def document = response

如下调用

var req = {'string_arg': 'myname','id': request_id };
var response = karate.call("classpath:getDocument.feature", req) 

request_id 是从之前的调用中检索到的,类似于 1612472688416

它发送请求为

{ "string_arg": "myname", "id": "1612472688416" }

终端服务(不在我的控制范围内)希望像下面这样 -- 没有双引号

{ "string_arg": "myname", "id": 1612472688416 }

我尝试了 javascript Number、parseInt 甚至调用 java.lang.Long.parseLong 但在所有情况下它最终都是科学记数法,如请求中的 1.612472688416E12

我怎样才能做到这一点?

阅读文档:https://github.com/intuit/karate#large-numbers

* def big = new java.math.BigDecimal(123123123123)
* string json = { num: '#(big)' }
* match json == '{"num":123123123123}'