如何将字符串解析为 "header object"?

How do I parse a string into "header object"?

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

你有什么线索吗?

稍加修改,您就可以正确设置字符串的格式并将其值放入对象中。然后将整个对象传递到您的 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);

我假设 /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

假设你的意思是 /n 而不是 \n

var str = ' "foo": "" , /n "bar": "" ';
JSON.parse(('{' + str + '}').replace(' /n', ''));