如何将字符串解析为“标题对象”?

时间:2019-12-06 17:06:13

标签: javascript string-parsing

我在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。我什至不知道这种结构的名称,所以我一直在努力解析它。

你有什么线索吗?

3 个答案:

答案 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