2014-03-29 104 views
1

我读取了<script>的内容 - 字段为STRING。解析JSON字符串失败

$('script').each(function() { 
     if (this.innerHTML.indexOf("AF_initDataCallback({key: '12'")>-1) { 
      var complete=this.innerHTML; 
      var startJSON=complete.indexOf('['); 
      var endJSON=complete.lastIndexOf(']'); 
     // var ar=eval(complete.substring(startJSON,endJSON)); 
      var ar2=$.parseJSON(complete.substring(startJSON,endJSON)); 

     } 
    }); 

通过我收到以下内容我想CONVER一个“真实”的JSON操作

"[[[["23e29db10f09d296"] 
,["Friends",,"Your real friends, the ones you feel comfortable sharing private details with.",,,,,,,2,2,,"00000000",1,1,1] 
] 
,[["3d5354de09baf36e"] 
,["Family",,"Your close and extended family, with as many or as few in-laws as you want.",,,,,,,2,2,,"00000001",2,1,1] 
] 
,[["21f948f108db184f"] 
,["Techie",,"",,,,,,,2,2,,"00000002",0,1,1] 
] 
,[["7373617e08bbeac4"] 
,["funny",,,,,,,,,2,2,,"00000003",0,1,1] 
] 
,[["4ace516d8d62f107"] 
,["Job",,,,,,,,,2,2,,"00000004",0,1,1] 
] 
,[["5594b1f8d1f1e37"] 
,["Followers",,,,,,,,,2,2,,"00000005",0,1,1] 
] 
,[["2bc5e6a50e948a73"] 
,["Job: Nice",,"",,,,,,,2,2,,"00000006",0,1,1] 
] 
,[["397a6a970cade6e8"] 
,["rx8",,,,,,,,,2,2,,"00000007",0,1,1] 
] 
,[["13ea3c80821ad9c"] 
,["promi",,,,,,,,,2,2,,"00000008",0,1,1] 
] 
,[["588da2260e942271"] 
,["Firmen",,,,,,,,,2,2,,"00000009",0,1,1] 
] 
,[["337bb5990e4870e5"] 
,["News",,,,,,,,,2,2,,"0000000a",0,1,1] 
] 
,[["4856572c0e1de220"] 
,["Gaming",,,,,,,,,2,2,,"0000000b",0,1,1] 
] 
,[["3555f8f8bc5726f"] 
,["mine",,,,,,,,,2,2,,"0000000c",0,1,1] 
] 
,[["6a01451c89ca64ae"] 
,["Nette Leute",,"",,,,,,,2,2,,"0000000d",0,1,1] 
] 
,[["90ed4e98f5820f7"] 
,["Hamburg",,"",,,,,,,2,2,,"0000000e",0,1,1] 
] 
,[["56bac85c894170b8"] 
,["Job-Contacts",,"",,,,,,,2,2,,"0000000f",0,1,1] 
] 
,[["485ab93e8e81d66d"] 
,["Fussball",,"",,,,,,,2,2,,"00000010",0,1,1] 
] 
,[["5ec1bb9409bad931"] 
,["Journaille",,"",,,,,,,2,2,,"00000011",0,1,1] 
] 
,[["135ce0d189b1e545"] 
,["mal schauen",,,,,,,,,2,2,,"00000012",,1,1] 
] 
,[["1ecbecf28ec85202"] 
,["Lonely Circle",,"",,,,,,,2,2,,"00000013",0,1,1] 
] 
,[["38a246348c513a39"] 
,["ignore",,,,,,,,,2,2,,"00000014",0,1,1] 
] 
,[["2f9c4a3c0e1f43b9"] 
,["Vielschreiber",,"",,,,,,,2,2,,"00000015",0,1,1] 
] 
,[["7fd0532089537115"] 
,["Bombenbauer",,"",,,,,,,2,2,,"00000016",0,1,1] 
] 
,[["765e2a78e64b1a6"] 
,["Techsites",,"",,,,,,,2,2,,"00000017",0,1,1] 
] 
,[["598e823988cf077e"] 
,["OK",,"",,,,,,,2,2,,"00000018",0,1,1] 
] 
,[["3edae58f895c3933"] 
,["Star Trek",,,,,,,,,2,2,,"00000019",0,1,1] 
] 
,[["22ad725f89342264"] 
,["Deppen",,,,,,,,,2,2,,"0000001a",0,1,1] 
] 
,[["254c1dec0d1bf02a"] 
,["science",,,,,,,,,2,2,,"0000001b",0,1,1] 
] 
,[["2b4588aa898848a4"] 
,["Undeutsch",,,,,,,,,2,2,,"0000001c",0,1,1] 
] 
,[["300a8672084d875b"] 
,["eurpeans",,,,,,,,,2,2,,"0000001d",0,1,1] 
] 
,[["7de54f780f74eb6d"] 
,["Autoren",,,,,,,,,2,2,,"0000001e",0,1,1] 
] 
,[["152f86d208909412"] 
,["Unterhaltung",,,,,,,,,2,2,,"0000001f",0,0,1] 
] 
,[["6d96794b0f6ac25e"] 
,["Bookmarks",,"",,,,,,,2,2,,"00000020",0,1,1] 
] 
,[["76c46c5489053a6b"] 
,["Usertreffen",,,,,,,,,2,2,,"00000021",0,1,1] 
] 
,[["80d2af10e3778b1"] 
,["g+j",,,,,,,,,2,2,,"00000022",0,1,1] 
] 
,[["e2e37408d864f3f"] 
,["Ouya Follower",,,,,,,,,2,2,,"00000023",0,1,1] 
] 
,[["2916afdf8cbcf8e0"] 
,["Ingress DE",,"",,,,,,,2,2,,"00000024",0,1,1] 
] 
,[["74bca48bb5e9bf"] 
,["Ouya",,,,,,,,,2,2,,"00000025",0,1,1] 
] 
,[["63d74040084991b1"] 
,["Spam",,,,,,,,,2,2,,"00000026",0,1,1] 
] 
,[["6d0e7cf08bee08d8"] 
,["Geeks",,,,,,,,,2,2,,"00000027",0,1,1] 
] 
,[["1deb550f8d794be4"] 
,["janzneu",,,,,,,,,2,2,,"00000028",0,0,1] 
] 
,[["6c02104c094dd570"] 
,["urlaub",,,,,,,,,2,2,,"00000029",0,0,1] 
] 
,[["267736b60f3a46e7"] 
,["Heimat",,,,,,,,,2,2,,"0000002a",0,1,1] 
] 
,[["7a7fd8738eedd564"] 
,["Google",,,,,,,,,2,2,,"0000002b",0,0,1] 
] 
,[["3e6492e98907eda2"] 
,["Politik",,,,,,,,,2,2,,"0000002c",0,0,1] 
] 
,[["42f28c228ae071ac"] 
,["prio",,,,,,,,,2,2,,"0000002d",0,0,1] 
] 
,[["2c2fbd540de7df0f"] 
,["Optimizer",,,,,,,,,2,2,,"0000002e",0,1,1] 
] 
] 
" 

所以,我收到一个字符串,它已经是“看起来”像JSON和“是”一个真正的JSON之前。

但是当我尝试将其转换为一个真正的对象使用$.parseJSON我得到的错误

Uncaught SyntaxError: Unexpected token ,

难道我之前做一些转换或环绕它的东西?

(更新)的全部脚本区我要抢:

<script>AF_initDataCallback({key: '12', isError: false , data:[[[["23e29db10f09d296"] 
,["Friends",,"Your real friends, the ones you feel comfortable sharing private details with.",,,,,,,2,2,,"00000000",1,1,1] 
] 
,[["3d5354de09baf36e"] 
,["Family",,"Your close and extended family, with as many or as few in-laws as you want.",,,,,,,2,2,,"00000001",2,1,1] 
] 
,[["21f948f108db184f"] 
,["Techie",,"",,,,,,,2,2,,"00000002",0,1,1] 
] 
,[["7373617e08bbeac4"] 
,["funny",,,,,,,,,2,2,,"00000003",0,1,1] 
] 
,[["4ace516d8d62f107"] 
,["Job",,,,,,,,,2,2,,"00000004",0,1,1] 
] 
,[["5594b1f8d1f1e37"] 
,["Followers",,,,,,,,,2,2,,"00000005",0,1,1] 
] 
,[["2bc5e6a50e948a73"] 
,["Job: Nice",,"",,,,,,,2,2,,"00000006",0,1,1] 
] 
,[["397a6a970cade6e8"] 
,["rx8",,,,,,,,,2,2,,"00000007",0,1,1] 
] 
,[["13ea3c80821ad9c"] 
,["promi",,,,,,,,,2,2,,"00000008",0,1,1] 
] 
,[["588da2260e942271"] 
,["Firmen",,,,,,,,,2,2,,"00000009",0,1,1] 
] 
,[["337bb5990e4870e5"] 
,["News",,,,,,,,,2,2,,"0000000a",0,1,1] 
] 
,[["4856572c0e1de220"] 
,["Gaming",,,,,,,,,2,2,,"0000000b",0,1,1] 
] 
,[["3555f8f8bc5726f"] 
,["mine",,,,,,,,,2,2,,"0000000c",0,1,1] 
] 
,[["6a01451c89ca64ae"] 
,["Nette Leute",,"",,,,,,,2,2,,"0000000d",0,1,1] 
] 
,[["90ed4e98f5820f7"] 
,["Hamburg",,"",,,,,,,2,2,,"0000000e",0,1,1] 
] 
,[["56bac85c894170b8"] 
,["Job-Contacts",,"",,,,,,,2,2,,"0000000f",0,1,1] 
] 
,[["485ab93e8e81d66d"] 
,["Fussball",,"",,,,,,,2,2,,"00000010",0,1,1] 
] 
,[["5ec1bb9409bad931"] 
,["Journaille",,"",,,,,,,2,2,,"00000011",0,1,1] 
] 
,[["135ce0d189b1e545"] 
,["mal schauen",,,,,,,,,2,2,,"00000012",,1,1] 
] 
,[["1ecbecf28ec85202"] 
,["Lonely Circle",,"",,,,,,,2,2,,"00000013",0,1,1] 
] 
,[["38a246348c513a39"] 
,["ignore",,,,,,,,,2,2,,"00000014",0,1,1] 
] 
,[["2f9c4a3c0e1f43b9"] 
,["Vielschreiber",,"",,,,,,,2,2,,"00000015",0,1,1] 
] 
,[["7fd0532089537115"] 
,["Bombenbauer",,"",,,,,,,2,2,,"00000016",0,1,1] 
] 
,[["765e2a78e64b1a6"] 
,["Techsites",,"",,,,,,,2,2,,"00000017",0,1,1] 
] 
,[["598e823988cf077e"] 
,["OK",,"",,,,,,,2,2,,"00000018",0,1,1] 
] 
,[["3edae58f895c3933"] 
,["Star Trek",,,,,,,,,2,2,,"00000019",0,1,1] 
] 
,[["22ad725f89342264"] 
,["Deppen",,,,,,,,,2,2,,"0000001a",0,1,1] 
] 
,[["254c1dec0d1bf02a"] 
,["science",,,,,,,,,2,2,,"0000001b",0,1,1] 
] 
,[["2b4588aa898848a4"] 
,["Undeutsch",,,,,,,,,2,2,,"0000001c",0,1,1] 
] 
,[["300a8672084d875b"] 
,["eurpeans",,,,,,,,,2,2,,"0000001d",0,1,1] 
] 
,[["7de54f780f74eb6d"] 
,["Autoren",,,,,,,,,2,2,,"0000001e",0,1,1] 
] 
,[["152f86d208909412"] 
,["Unterhaltung",,,,,,,,,2,2,,"0000001f",0,0,1] 
] 
,[["6d96794b0f6ac25e"] 
,["Bookmarks",,"",,,,,,,2,2,,"00000020",0,1,1] 
] 
,[["76c46c5489053a6b"] 
,["Usertreffen",,,,,,,,,2,2,,"00000021",0,1,1] 
] 
,[["80d2af10e3778b1"] 
,["g+j",,,,,,,,,2,2,,"00000022",0,1,1] 
] 
,[["e2e37408d864f3f"] 
,["Ouya Follower",,,,,,,,,2,2,,"00000023",0,1,1] 
] 
,[["2916afdf8cbcf8e0"] 
,["Ingress DE",,"",,,,,,,2,2,,"00000024",0,1,1] 
] 
,[["74bca48bb5e9bf"] 
,["Ouya",,,,,,,,,2,2,,"00000025",0,1,1] 
] 
,[["63d74040084991b1"] 
,["Spam",,,,,,,,,2,2,,"00000026",0,1,1] 
] 
,[["6d0e7cf08bee08d8"] 
,["Geeks",,,,,,,,,2,2,,"00000027",0,1,1] 
] 
,[["1deb550f8d794be4"] 
,["janzneu",,,,,,,,,2,2,,"00000028",0,0,1] 
] 
,[["6c02104c094dd570"] 
,["urlaub",,,,,,,,,2,2,,"00000029",0,0,1] 
] 
,[["267736b60f3a46e7"] 
,["Heimat",,,,,,,,,2,2,,"0000002a",0,1,1] 
] 
,[["7a7fd8738eedd564"] 
,["Google",,,,,,,,,2,2,,"0000002b",0,0,1] 
] 
,[["3e6492e98907eda2"] 
,["Politik",,,,,,,,,2,2,,"0000002c",0,0,1] 
] 
,[["42f28c228ae071ac"] 
,["prio",,,,,,,,,2,2,,"0000002d",0,0,1] 
] 
,[["2c2fbd540de7df0f"] 
,["Optimizer",,,,,,,,,2,2,,"0000002e",0,1,1] 
] 
] 
] 
});</script> 
+0

给出的例子是无效的json。请复制完整的字符串文本 –

+0

@VasilVanchuk我发布了完整的字符串文本。正如你可以看到它看起来就像我之前发布的部分 –

回答

2

阵列中的各项指标必须有一个值。你不可能有[ something, , something ]

你可能想要在每对相邻的逗号之间有一个null

1

在JSON,空数组成员是无效的,例如:

["News",,,,,,,,,2,2,,"0000000a",0,1,1] 

如果您摆脱这些,也可能是有效的JSON:

["News",2,2,"0000000a",0,1,1] 

其实,这是什么错误消息告诉你:)。你应该阅读JSON spec,它确实很短。也可以运行validator

0

在从@Quentin我来到了以下解决方案的答案,@kapa:

var cstr=complete.substring(startJSON,endJSON+1); 
while (cstr.indexOf(",,")>0) { 
    cstr=cstr.replace(",,",",null,")     
}; 
var ar2=$.parseJSON(cstr); 

说实话,我不喜欢它。它看起来对我来说很脏。

+1

干净的方法是将原始的JSON修复为JSON。但我知道你可能无法访问这些信息。所以你所能做的就是这样的黑客。 – kapa