将字符串转换为JSON对象

Zer*_*er0 142 javascript ajax json

你如何让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..
Run Code Online (Sandbox Code Playgroud)

Ksh*_*tij 343

var obj = JSON.parse(string);
Run Code Online (Sandbox Code Playgroud)

string你的json字符串在哪里?

  • 当我通过Ajax获取它时,它的工作原理就是它将响应作为JSON处理.所以我想我必须将它转换为JSON对象.. (2认同)
  • 我最终去了jsonlint.com,并确保我的Json是正确的 (2认同)

Sar*_*raz 26

你可以使用JSON.parse()它.

请参阅MDN上的文档

例:

var myObj = JSON.parse('{"p": 5}');
console.log(myObj);
Run Code Online (Sandbox Code Playgroud)

  • @ Zer0:我们只能尽我们所能回答.你说你有一个JSON字符串,我们会相应地回答.看来你的字符串是不同的,如果你发布它,我们可以回答这一点.如果你问一个关于编码的问题,那么代码/数据是必不可少的. (4认同)
  • @ Zer0:您应该将您的问题与json字符串一起更新. (2认同)

小智 7

我和你的类似字符串有同样的问题

{id:1,field1:"someField"},{id:2,field1:"someOtherField"}
Run Code Online (Sandbox Code Playgroud)

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

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

希望能帮助到你,

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


san*_*tel 6

var obj = jQuery.parseJSON('{"name":"John"}');
alert( obj.name === "John" );
Run Code Online (Sandbox Code Playgroud)

链接:-

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


Siy*_*mdi 5

简单地使用eval函数。

var myJson = eval(theJsibStr);
Run Code Online (Sandbox Code Playgroud)

  • eval 是邪恶的,使用这种方法要非常小心安全 (3认同)