将字符串转换为 JSON 对象

IT技术 javascript ajax json
2021-01-15 19:24:20

你如何让 JS 认为一个字符串是 JSON ?

我有一个函数,它只在 JSON 对象传递给它时才有效。如果我向它传递一个字符串,格式与 JSON 相同,则它不起作用。所以我想让这个函数认为传递给它的字符串是一个 JSON。该字符串确实是 JSON 格式。

我也尝试了以下方法。我通过 Ajax 输入字符串,“handle as”参数为“JSON”,然后当我将结果传递给函数时,它起作用了。

所以我推断问题不在于字符串。如何将此字符串转换为 JSON?如果我通过 ajax 请求获得相同的字符串,然后将其传递给函数工作,而直接传递它不起作用。

字符串如下:

  {
     "data": [
   {
  "id": "id1",
      "fields": [
        {
          "id": "name1",
          "label": "joker",
          "unit": "year"
        },
         {"id": "name2", "label": "Quantity"},
    ],
      "rows": [    data here....

and closing braces..
6个回答
var obj = JSON.parse(string);

string你的 json 字符串在哪里

这是行不通的。它抛出错误“语法错误:JSON.parse:意外字符”。字符串没有任何问题,因为当我通过 ajax 请求获取相同的字符串并将其作为“JSON”处理时,不会出现任何问题。
2021-03-18 19:24:20
当我通过 Ajax 获取它时,它的工作原理是将响应作为 JSON 处理。所以我想我必须把它转换成一个 JSON 对象..
2021-03-21 19:24:20
我最终去了 jsonlint.com,并确保我的 Json 是正确的
2021-03-21 19:24:20
请发布您的实际 JSON 字符串
2021-03-24 19:24:20
{ "data": [ { id": - 您在这里缺少双引号,即 id 的双引号开始
2021-04-09 19:24:20

您可以JSON.parse()为此使用

请参阅 MDN 上的文档

例子:

var myObj = JSON.parse('{"p": 5}');
console.log(myObj);
这是行不通的。它抛出错误“语法错误:JSON.parse:意外字符”。字符串没有任何问题,因为当我通过 ajax 请求获取相同的字符串并将其作为“JSON”处理时,不会出现任何问题。
2021-03-13 19:24:20
@Zer0:您应该更新您的问题,说明您如何尝试以及您的 json 字符串。
2021-03-20 19:24:20
@Zer0:我们只能尽我们所知回答。你说你有一个 JSON 字符串,我们相应地回答。似乎您的字符串不同,如果您发布它,我们可以考虑到这一点来回答。如果你问一个关于编码的问题,那么代码/数据是必不可少的。
2021-04-03 19:24:20
var obj = jQuery.parseJSON('{"name":"John"}');
alert( obj.name === "John" );

关联:-

http://api.jquery.com/jQuery.parseJSON/

我对像你这样的类似字符串有同样的问题

{id:1,field1:"someField"},{id:2,field1:"someOtherField"}

这里的问题是字符串的结构。在这种情况下,json 解析器没有意识到它需要创建 2 个对象。所以我所做的有点愚蠢,我只是重新构造了我的字符串并添加[]了解析器识别的

var myString = {id:1,field1:"someField"},{id:2,field1:"someOtherField"}
myString = '[' + myString +']'
var json = $.parseJSON(myString)

希望能帮助到你,

如果有人有更优雅的方法,请分享。

我使用$.parseJSONwhere JSON.parseis not working 并抛出错误解决了我的问题JSON.parse is not a function
2021-03-24 19:24:20
在上面的代码中,您的构造myString不正确。它不是字符串,而且是格式不正确的 JSON。你的第二行就会变得多余。它应该是这样的: var myString = '[{"id":1,"field1":"someField"},{"id":2,"field1":"someOtherField"}]' 我知道这是一篇很老的帖子,但我想我会增加一些清晰度,以防有人发现它。
2021-04-09 19:24:20

简单地使用eval函数。

var myJson = eval(theJsibStr);
eval 是邪恶的,使用这种方法要非常小心安全
2021-03-29 19:24:20