2014-02-18 75 views
1

我试图将字符串解析为JSON对象,但它不起作用。我调试代码时出现语法错误。这里是我想解析的字符串:将字符串类型解析为JSON对象时出错

var listString = "{ title: 'MySchema'," + "root: {id:'" + headID + "'," 
+ "title:'" + topHead[0].Designation + "'," + "subtitle:'" + headName + "',"; 
liststring = liststring + "{ id: '" + head + "'," + "title: '" + childs[cnt].Designation + "'," + "subtitle: '" + title + "'," + "type: '" + childs[cnt].Typav + "'"; 

liststring = getChildNodes(tasksEntries, head, liststring); liststring = liststring + "},";}liststring = liststring + "]}}";} listString = childliststring; 

$ .parseJSON(listString);

我没有得到任何JSON对象的回报。有什么想法吗?

+1

是,该字符串不是有效的JSON对象,所以它使你无法解析它作为一个道理。 –

回答

0

你有很多很多的语法错误,它的一个是这里的逗号'staff'},]}}" 接下来,每一个字符串必须在“报价,因此每名属性和值。ALSO整型值没有引号。

的正确的JSON是:

{ 
    "title":"myTitle", 
    "root":{ 
     "id":1, 
     "title":"CEO", 
     "subtitle":"John Doe", 
     "children":[ 
      { 
       "id":2, 
       "title":"COO", 
       "subtitle":"Steve Berman", 
       "type":"staff" 
      }, 
      { 
       "id":3, 
       "title":"CTO", 
       "subtitle":"Mark Claskov", 
       "type":"staff" 
      } 
     ] 
    } 
} 

您可以在这里JSON测试你: http://json.parser.online.fr/beta/

0

首先,你忘了把;在年底:

var myyVar = {title: 'myTitle',root: {id:'1',title:'CEO',subtitle:'John Doe',children: [{ id: '2',title: 'COO',subtitle: 'Steve Berman',type: 'staff'},{ id: '3',title: 'CTO',subtitle: 'Mark Claskov',type: 'staff'},]}}; 

其次你的主要变量myyVar是一个你必须$.parseJSON()使用,而不是myvar

$.parseJSON(myyVar); 

最后,you can correct improper json format

var myyVar = {title: 'myTitle',root: {id:'1',title:'CEO',subtitle:'John Doe',children: [{ id: '2',title: 'COO',subtitle: 'Steve Berman',type: 'staff'},{ id: '3',title: 'CTO',subtitle: 'Mark Claskov',type: 'staff'},]}}; 
var newVar = JSON.stringify(myyVar); 

alert($.parseJSON(newVar)); 

检查fiddle。 [尝试将alert()更改为console.log()以查看浏览器控制台上发生了什么]

+0

该函数采用“{”键“:”值“}”格式的字符串。所以你的回答可能仍然是错误的。 – kartikluke

0

您的字符串格式不正确。阅读parseJSON API

Description: Takes a well-formed JSON string and returns the resulting JavaScript object.

version added: 1.4.1jQuery.parseJSON(json) json Type: String The JSON string to parse.

你的JSON字符串应该是'{"key":"value"}'格式。传入格式不正确的JSON字符串会导致引发JavaScript异常。例如,以下所有格式不正确的JSON字符串:

{test: 1} //(test does not have double quotes around it). 
{'test': 1} //('test' is using single quotes instead of double quotes). 

JSON标准不允许“控制字符”,例如制表符或换行符。 像$.parseJSON('{ "testing":"1\t2\n3" }')这样的例子会在 的大部分实现中抛出一个错误,因为JavaScript解析器会将字符串的标签和换行符转换为文本标签和换行符;将反斜杠加倍,如 "1\\t2\\n3"可产生预期结果。当从服务器端语言(如PHP)将JSON注入到JavaScript文件中时,通常会出现此问题。

0

怨妇JSON字符串应该是在 '{ “键”: “值”}' 格式

JSON.parse("{id:'1'}");

语法错误:意外标记我

JSON.parse("{'id':'1'}");

语法错误:意外标记'

JSON.parse('{"id":"1"}');

对象{ID: “1”}

JSON.parse('{"id":1}');

对象{ID:1}

0

使用此来解析JSON字符串。

JSON.parse(json_string); 
0

你的字符串应该是这样的。

{ 
"title": "myTitle", 
"root": { 
    "id": "1", 
    "title": "CEO", 
    "subtitle": "JohnDoe", 
    "children": [ 
     { 
      "id": "2", 
      "title": "COO", 
      "subtitle": "SteveBerman", 
      "type": "staff" 
     }, 
     { 
      "id": "3", 
      "title": "CTO", 
      "subtitle": "MarkClaskov", 
      "type": "staff" 
     } 
     ] 
    } 
} 

您可以测试JSON是否有效与否在这个环节http://jsonlint.com/