客户希望能够使用内容类型的默认内容类型生成xmlhttp ajax请求:" application / x-www-form-urlencoded;字符集= UTF-8"但是以API期望application / json的形式发送数据。所以请求就是这样:
var settings = {
"async": true,
"crossDomain": true,
"url": "http://localhost:80/api/metadata/taxonomy",
"method": "POST",
"headers": {
"cache-control": "no-cache",
"postman-token": "62a245ad-a0a2-4dd3-bf84-37f622f00b7d"
},
"processData": false,
"data": "{\n\t\"practice\": [\"Learning\"]\n}"
}
$.ajax(settings).done(function (response) {
console.log(response);
});
但API希望能够将req.body作为可以立即使用的JSON对象获取:
"{"practice":["Learning"]}"
我可以改变这个" {\ n \ t \"练习\":[\"学习\"] \ n}"对此" {"练习":["学习"]}"以某种安全/建议的方式? (没有一些自制的解析函数或正则表达式)
答案 0 :(得分:1)
是的,JSON.parse
功能可用于此:
try{JSON.stringify(JSON.parse(data))}
会将带有换行符的奇怪json转换为标准的一行字符串json。
JSON.parse
将json解析为对象
JSON.stringify
将对象转换为单行格式的JSON对象
try
如果传递了无效的json字符串,JSON.parse将失败。 (\ ns在json.parse中有效)
如果这意味着您要将"{\n\"your\":\n \"object\"}"
转换为{"your": "object"}
等javascript对象,则可以使用try{JSON.parse(variablename)}
根据these answers,对于旧版浏览器,您可能需要JSON-js
答案 1 :(得分:0)
您实际上可以将JSON发布为正文。
var settings = {
"async": true,
"crossDomain": true,
"url": "http://localhost:80/api/metadata/taxonomy",
"method": "POST",
"headers": {
"cache-control": "no-cache",
"postman-token": "62a245ad-a0a2-4dd3-bf84-37f622f00b7d"
},
"dataType" : "json"
"processData": false,
"data": { "practice": ["Learning"] }
}
$.ajax(settings).done(function (response) {
console.log(response);
});
请注意,他们的新属性告诉要发布的数据类型是 JSON ,现在在data
属性中,该值是JSON格式而不是字符串。
希望这能解决你的问题。