2014-03-29 232 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