我在Javascript中有一个字符串。看起来像这样:
' "foo": "" , /n "bar": "" '
我需要它,因此我可以请求一个API,并且这样发出请求:
$http
.post(urlToAPI, {
"foo": "",
"bar": ""
})
.success(function(data) {
console.log("yay")
})
如您所见,作为参数,我给了post方法一个包含foo和bar的结构。问题是我无法在其中传递自己的字符串,因为我需要在之前对其进行解析。
所以,基本上,我需要这个
' "foo": "" , /n "bar": "" '
要成为这个:
"foo": "", "bar": ""
我尝试使用JSON.parse()
,但由于它不是JSON对象,因此无法使用。
我也尝试了一些CSV转换器,但似乎也不是CSV。我什至不知道这种结构的名称,所以我一直在努力解析它。
你有什么线索吗?
答案 0 :(得分:2)
假设您的意思是/ n而不是\ n
var str = ' "foo": "" , /n "bar": "" ';
JSON.parse(('{' + str + '}').replace(' /n', ''));
答案 1 :(得分:1)
通过一点点按摩,您可以正确设置字符串格式并将其值放入对象中。然后将整个对象传递给您的AJAX调用:
.post(urlToAPI, obj)
let str = ' "foo": "" , /n "bar": "" ';
const arr = str.trim().replace("/n","").split("\"").join("").split(",");
const obj = {};
arr.forEach((el, idx) => {
let arr2 = el.split(":");
obj[arr2[0].trim()] = arr2[1].trim();
});
console.log(obj);
答案 2 :(得分:-1)
我假设/n
实际上是\n
(换行符)。在这种情况下,您可以利用eval
函数将字符串解析为json:
var input=' "foo": "" , \n "bar": "" ';
var serial="json={"+input+"}";
var json=eval(serial);
// Now you can access json.foo and json.bar