如何阻止/避免在 json 中被转义?
How do I stop / from being escaped in json?
由于某种原因,带有 /
字符的变量被转换为 \/
,我该如何防止这种情况发生?
- 我通过 运行
npx http-echo-server
启动了一个监听 localhost:3000 的回显服务器
- 我执行以下操作:
代码:
* 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" }
。
http 服务器日志显示 "--> {"user":"/schemes/ATT_5_55/CH_1","name":"Some Name"}"
空手道显示回声的结果{"user":"\/abc\/user","name":"Some Name"}
我试过:
- def CHALLENGE_USER = '/abc/user'
- def CHALLENGE_USER = "/abc/user"
- def CHALLENGE_USER = '/abc/user'
- def CHALLENGE_USER = '//abc//用户'
事后设置变量也不起作用:
* 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
由于某种原因,带有 /
字符的变量被转换为 \/
,我该如何防止这种情况发生?
- 我通过 运行
npx http-echo-server
启动了一个监听 localhost:3000 的回显服务器
- 我执行以下操作:
代码:
* 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" }
。
http 服务器日志显示 "--> {"user":"/schemes/ATT_5_55/CH_1","name":"Some Name"}"
空手道显示回声的结果
{"user":"\/abc\/user","name":"Some Name"}
我试过:
- def CHALLENGE_USER = '/abc/user'
- def CHALLENGE_USER = "/abc/user"
- def CHALLENGE_USER = '/abc/user'
- def CHALLENGE_USER = '//abc//用户'
事后设置变量也不起作用:
* 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