如何阻止/避免在 json 中被转义?

How do I stop / from being escaped in json?

由于某种原因,带有 / 字符的变量被转换为 \/,我该如何防止这种情况发生?

  1. 我通过 运行 npx http-echo-server
  2. 启动了一个监听 localhost:3000 的回显服务器
  3. 我执行以下操作:

代码:

* def CHALLENGE_USER = '/abc/user'
* def loginJson = { user: '#(CHALLENGE_USER)' , name: 'Some Name'}
* print loginJson
* def TEST_URL = 'http://localhost:3000'
Given url TEST_URL+'/session/loginresponse'
And header Content-Type = 'application/json'
And request loginResponseJson
And method put
Then status 200

它像我期望的那样打印 { "user": "/abc/user", "name": "Some Name" }

  1. http 服务器日志显示 "--> {"user":"/schemes/ATT_5_55/CH_1","name":"Some Name"}"

  2. 空手道显示回声的结果{"user":"\/abc\/user","name":"Some Name"}

我试过:

事后设置变量也不起作用:

* def loginJson = {  name: 'Some Name'}
* loginJson.user = CHALLENGE_USER

是的,根据 JSON 规范,这是合法的:JSON: why are forward slashes escaped?

我们使用的 Java 库就是这样做的。

你的服务器有问题吗?如果是这样 - 那么你有空手道浮出水面的错误。

如果你真的想完全控制请求,请使用 text 但我认为这可能是浪费时间:

一个讨厌的解决方法,请原谅我Peter Thomas

您可以将json转换为字符串,然后去掉\字符。

谢天谢地,我只有一个用例。

* def CHALLENGE_USER = '/abc/user'
* def loginJson = { user: '#(CHALLENGE_USER)' , name: 'Some Name'}
* string json = loginJson
* def loginJsonText = json.replaceAll("\", "")
* print loginJson
* def TEST_URL = 'http://localhost:3000'
Given url TEST_URL+'/session/loginresponse'
And header Content-Type = 'application/json'
And request loginJsonText
And method put
Then status 200