[英]How can I parse a comma separated string into two variables using JavaScript?
[英]How can I parse a JSON string in which objects are not comma separated?
我一直在嘗試解析從API獲取的JSON。 它似乎不起作用。 當我嘗試將整個響應傳遞到對象或數組中時,它將整個響應插入到單個對象或數組中。 我只是發布API響應,而不是我嘗試的代碼:
{"canonical_url": "http://magento2-demo.nexcess.net/"}{"shop_properties": {"is_hypernode": false, "hypernode_without_magento": false, "loadtime_milliseconds": 638}}{"admin_url": null}{"security.supee5344": {"magento2": false, "resultString": "backend url required", "riskRating": "low", "result": "unkn", "magento1": true, "cloudflareCacheHit": null}}{"security.supee5994": {"magento2": false, "resultString": "installed", "riskRating": "low", "result": "ok", "magento1": true, "cloudflareCacheHit": null}}{"security.ransomware": {"magento2": true, "resultString": "safe", "riskRating": "low", "result": "ok", "magento1": true, "cloudflareCacheHit": null}}{"security.cart2quoterce": {"magento2": false, "resultString": "safe", "riskRating": "low", "result": "ok", "magento1": true, "cloudflareCacheHit": null}}{"security.ajaxcartrce": {"magento2": false, "resultString": "safe", "riskRating": "low", "result": "ok", "magento1": true, "cloudflareCacheHit": null}}{"security.opendev": {"magento2": true, "resultString": "safe", "riskRating": "low", "result": "ok", "magento1": true, "cloudflareCacheHit": null}}{"security.openversioncontrol": {"magento2": true, "resultString": "safe", "riskRating": "low", "result": "ok", "magento1": true, "cloudflareCacheHit": null}}{"security.sslcheck": {"magento2": true, "resultString": "misconfigured", "riskRating": "medium", "result": "fail", "magento1": true, "cloudflareCacheHit": null}}{"security.guruincinfection": {"magento2": true, "resultString": "safe", "riskRating": "low", "result": "ok", "magento1": true, "cloudflareCacheHit": null}}{"security.creditcardhijack": {"magento2": true, "resultString": "safe", "riskRating": "low", "result": "ok", "magento1": true, "cloudflareCacheHit": null}}{"security.visbot": {"magento2": false, "resultString": "safe", "riskRating": "low", "result": "ok", "magento1": true, "cloudflareCacheHit": null}}{"security.cryptojacking": {"magento2": true, "resultString": "safe", "riskRating": "low", "result": "ok", "magento1": true, "cloudflareCacheHit": null}}{"security.outdatedserverversion": {"magento2": true, "resultString": "unknown", "riskRating": "low", "result": "unkn", "magento1": true, "cloudflareCacheHit": null}}{"security.amastyopendownload": {"magento2": false, "resultString": "safe", "riskRating": "low", "result": "ok", "magento1": true, "cloudflareCacheHit": null}}{"security.cacheleak": {"magento2": true, "resultString": "safe", "riskRating": "low", "result": "ok", "magento1": true, "cloudflareCacheHit": null}}{"security.openmagmi": {"magento2": false, "resultString": "safe", "riskRating": "low", "result": "ok", "magento1": true, "cloudflareCacheHit": null}}{"security.webforms": {"magento2": false, "resultString": "safe", "riskRating": "low", "result": "ok", "magento1": true, "cloudflareCacheHit": null}}{"security.bruteforce": {"magento2": false, "resultString": "protected", "riskRating": "low", "result": "ok", "magento1": true, "cloudflareCacheHit": null}}{"security.magversion": {"magento2": true, "resultString": "CE 2.1.0 - 2.1.2", "riskRating": "high", "result": "fail", "magento1": true, "cloudflareCacheHit": null}}{"security.supee6788": {"magento2": false, "resultString": "installed", "riskRating": "low", "result": "ok", "magento1": true, "cloudflareCacheHit": null}}{"security.supee8788": {"magento2": false, "resultString": "unknown", "riskRating": "low", "result": "unkn", "magento1": true, "cloudflareCacheHit": null}}{"security.supee9652": {"magento2": false, "resultString": "safe", "riskRating": "low", "result": "ok", "magento1": true, "cloudflareCacheHit": null}}{"security.supee10570": {"magento2": false, "resultString": "patched", "riskRating": "low", "result": "ok", "magento1": true, "cloudflareCacheHit": null}}{"security.supee10752": {"magento2": false, "resultString": "patched", "riskRating": "low", "result": "ok", "magento1": true, "cloudflareCacheHit": null}}{"security.supee6285": {"magento2": false, "resultString": "unknown", "riskRating": "low", "result": "unkn", "magento1": true, "cloudflareCacheHit": null}}{"security.supee6482": {"magento2": false, "resultString": "unknown", "riskRating": "low", "result": "unkn", "magento1": true, "cloudflareCacheHit": null}}{"security.exposedapi": {"magento2": true, "resultString": "safe", "riskRating": "low", "result": "ok", "magento1": false, "cloudflareCacheHit": null}}{"security.supee10266": {"magento2": false, "resultString": "backend url required", "riskRating": "low", "result": "unkn", "magento1": true, "cloudflareCacheHit": null}}{"security.supee9767": {"magento2": false, "resultString": "unknown", "riskRating": "low", "result": "unkn", "magento1": true, "cloudflareCacheHit": null}}{"security.supee10415": {"magento2": false, "resultString": "unknown", "riskRating": "low", "result": "unkn", "magento1": true, "cloudflareCacheHit": null}}{"security.supee7405": {"magento2": false, "resultString": "unknown", "riskRating": "low", "result": "unkn", "magento1": true, "cloudflareCacheHit": null}}
https://www.npmjs.com/package/really-relaxed-json可以在這里幫助您。 不幸的是,由於某些原因,StackOverflow片段在作為外部資源包含時無法運行(來自CDN https://cdn.jsdelivr.net/npm/relaxed-json@1.0.1/relaxed-json.js ),所以我創建了一個Stackblitz演示在這里:
https://js-ei2iz2.stackblitz.io <-檢查控制台
這是可編輯的示例:
let response = `{
"canonical_url":"http://magento2-demo.nexcess.net/"
}{
"shop_properties":{
"is_hypernode":false,
"hypernode_without_magento":false,
"loadtime_milliseconds":535
}
}{
"admin_url":null
}{
"security.supee5344":{
"magento2":false,
"resultString":"backend url required",
"riskRating":"low",
"result":"unkn",
"magento1":true,
"cloudflareCacheHit":null
}
}{
"security.supee5994":{
"magento2":false,
"resultString":"installed",
"riskRating":"low",
"result":"ok",
"magento1":true,
"cloudflareCacheHit":null
}
}{
"security.cart2quoterce":{
"magento2":false,
"resultString":"safe",
"riskRating":"low",
"result":"ok",
"magento1":true,
"cloudflareCacheHit":null
}
}{
"security.ransomware":{
"magento2":true,
"resultString":"safe",
"riskRating":"low",
"result":"ok",
"magento1":true,
"cloudflareCacheHit":null
}
}{
"security.ajaxcartrce":{
"magento2":false,
"resultString":"safe",
"riskRating":"low",
"result":"ok",
"magento1":true,
"cloudflareCacheHit":null
}
}{
"security.openversioncontrol":{
"magento2":true,
"resultString":"safe",
"riskRating":"low",
"result":"ok",
"magento1":true,
"cloudflareCacheHit":null
}
}{
"security.opendev":{
"magento2":true,
"resultString":"safe",
"riskRating":"low",
"result":"ok",
"magento1":true,
"cloudflareCacheHit":null
}
}{
"security.guruincinfection":{
"magento2":true,
"resultString":"safe",
"riskRating":"low",
"result":"ok",
"magento1":true,
"cloudflareCacheHit":null
}
}{
"security.creditcardhijack":{
"magento2":true,
"resultString":"safe",
"riskRating":"low",
"result":"ok",
"magento1":true,
"cloudflareCacheHit":null
}
}{
"security.visbot":{
"magento2":false,
"resultString":"safe",
"riskRating":"low",
"result":"ok",
"magento1":true,
"cloudflareCacheHit":null
}
}{
"security.cryptojacking":{
"magento2":true,
"resultString":"safe",
"riskRating":"low",
"result":"ok",
"magento1":true,
"cloudflareCacheHit":null
}
}{
"security.outdatedserverversion":{
"magento2":true,
"resultString":"unknown",
"riskRating":"low",
"result":"unkn",
"magento1":true,
"cloudflareCacheHit":null
}
}{
"security.cacheleak":{
"magento2":true,
"resultString":"safe",
"riskRating":"low",
"result":"ok",
"magento1":true,
"cloudflareCacheHit":null
}
}{
"security.amastyopendownload":{
"magento2":false,
"resultString":"safe",
"riskRating":"low",
"result":"ok",
"magento1":true,
"cloudflareCacheHit":null
}
}{
"security.sslcheck":{
"magento2":true,
"resultString":"misconfigured",
"riskRating":"medium",
"result":"fail",
"magento1":true,
"cloudflareCacheHit":null
}
}{
"security.webforms":{
"magento2":false,
"resultString":"safe",
"riskRating":"low",
"result":"ok",
"magento1":true,
"cloudflareCacheHit":null
}
}{
"security.openmagmi":{
"magento2":false,
"resultString":"safe",
"riskRating":"low",
"result":"ok",
"magento1":true,
"cloudflareCacheHit":null
}
}{
"security.magversion":{
"magento2":true,
"resultString":"CE 2.1.0 - 2.1.2",
"riskRating":"high",
"result":"fail",
"magento1":true,
"cloudflareCacheHit":null
}
}{
"security.supee6788":{
"magento2":false,
"resultString":"installed",
"riskRating":"low",
"result":"ok",
"magento1":true,
"cloudflareCacheHit":null
}
}{
"security.supee8788":{
"magento2":false,
"resultString":"unknown",
"riskRating":"low",
"result":"unkn",
"magento1":true,
"cloudflareCacheHit":null
}
}{
"security.supee9652":{
"magento2":false,
"resultString":"safe",
"riskRating":"low",
"result":"ok",
"magento1":true,
"cloudflareCacheHit":null
}
}{
"security.supee10570":{
"magento2":false,
"resultString":"patched",
"riskRating":"low",
"result":"ok",
"magento1":true,
"cloudflareCacheHit":null
}
}{
"security.supee10752":{
"magento2":false,
"resultString":"patched",
"riskRating":"low",
"result":"ok",
"magento1":true,
"cloudflareCacheHit":null
}
}{
"security.supee6285":{
"magento2":false,
"resultString":"unknown",
"riskRating":"low",
"result":"unkn",
"magento1":true,
"cloudflareCacheHit":null
}
}{
"security.supee6482":{
"magento2":false,
"resultString":"unknown",
"riskRating":"low",
"result":"unkn",
"magento1":true,
"cloudflareCacheHit":null
}
}{
"security.exposedapi":{
"magento2":true,
"resultString":"safe",
"riskRating":"low",
"result":"ok",
"magento1":false,
"cloudflareCacheHit":null
}
}{
"security.bruteforce":{
"magento2":false,
"resultString":"protected",
"riskRating":"low",
"result":"ok",
"magento1":true,
"cloudflareCacheHit":null
}
}{
"security.supee10266":{
"magento2":false,
"resultString":"backend url required",
"riskRating":"low",
"result":"unkn",
"magento1":true,
"cloudflareCacheHit":null
}
}{
"security.supee9767":{
"magento2":false,
"resultString":"unknown",
"riskRating":"low",
"result":"unkn",
"magento1":true,
"cloudflareCacheHit":null
}
}{
"security.supee10415":{
"magento2":false,
"resultString":"unknown",
"riskRating":"low",
"result":"unkn",
"magento1":true,
"cloudflareCacheHit":null
}
}{
"security.supee7405":{
"magento2":false,
"resultString":"unknown",
"riskRating":"low",
"result":"unkn",
"magento1":true,
"cloudflareCacheHit":nulla
}
}`
response = "["+response+"]"
console.log(RJSON.parse(response))
function parse(str) {
{
let splitted = str.split('}{')
let json = [];
splitted.forEach((s, i) => {
let fullObjectString = i == 0 ? s + '}' : i == splitted.length - 1 ? '{' + s : '{' + s + '}'
json.push(
JSON.parse(fullObjectString)
)
})
return json
}
我以這種方式將您的json轉換為對象數組,這將解析為對象數組
var x=`{
"canonical_url":"http://magento2-demo.nexcess.net/"
}{
"shop_properties":{
"is_hypernode":false,
"hypernode_without_magento":false,
"loadtime_milliseconds":535
}
}{
"admin_url":null
}{
"security.supee5344":{
"magento2":false,
"resultString":"backend url required",
"riskRating":"low",
"result":"unkn",
"magento1":true,
"cloudflareCacheHit":null
}
}{
"security.supee5994":{
"magento2":false,
"resultString":"installed",
"riskRating":"low",
"result":"ok",
"magento1":true,
"cloudflareCacheHit":null
}
}{
"security.cart2quoterce":{
"magento2":false,
"resultString":"safe",
"riskRating":"low",
"result":"ok",
"magento1":true,
"cloudflareCacheHit":null
}
}{
"security.ransomware":{
"magento2":true,
"resultString":"safe",
"riskRating":"low",
"result":"ok",
"magento1":true,
"cloudflareCacheHit":null
}
}{
"security.ajaxcartrce":{
"magento2":false,
"resultString":"safe",
"riskRating":"low",
"result":"ok",
"magento1":true,
"cloudflareCacheHit":null
}
}{
"security.openversioncontrol":{
"magento2":true,
"resultString":"safe",
"riskRating":"low",
"result":"ok",
"magento1":true,
"cloudflareCacheHit":null
}
}{
"security.opendev":{
"magento2":true,
"resultString":"safe",
"riskRating":"low",
"result":"ok",
"magento1":true,
"cloudflareCacheHit":null
}
}{
"security.guruincinfection":{
"magento2":true,
"resultString":"safe",
"riskRating":"low",
"result":"ok",
"magento1":true,
"cloudflareCacheHit":null
}
}{
"security.creditcardhijack":{
"magento2":true,
"resultString":"safe",
"riskRating":"low",
"result":"ok",
"magento1":true,
"cloudflareCacheHit":null
}
}{
"security.visbot":{
"magento2":false,
"resultString":"safe",
"riskRating":"low",
"result":"ok",
"magento1":true,
"cloudflareCacheHit":null
}
}{
"security.cryptojacking":{
"magento2":true,
"resultString":"safe",
"riskRating":"low",
"result":"ok",
"magento1":true,
"cloudflareCacheHit":null
}
}{
"security.outdatedserverversion":{
"magento2":true,
"resultString":"unknown",
"riskRating":"low",
"result":"unkn",
"magento1":true,
"cloudflareCacheHit":null
}
}{
"security.cacheleak":{
"magento2":true,
"resultString":"safe",
"riskRating":"low",
"result":"ok",
"magento1":true,
"cloudflareCacheHit":null
}
}{
"security.amastyopendownload":{
"magento2":false,
"resultString":"safe",
"riskRating":"low",
"result":"ok",
"magento1":true,
"cloudflareCacheHit":null
}
}{
"security.sslcheck":{
"magento2":true,
"resultString":"misconfigured",
"riskRating":"medium",
"result":"fail",
"magento1":true,
"cloudflareCacheHit":null
}
}{
"security.webforms":{
"magento2":false,
"resultString":"safe",
"riskRating":"low",
"result":"ok",
"magento1":true,
"cloudflareCacheHit":null
}
}{
"security.openmagmi":{
"magento2":false,
"resultString":"safe",
"riskRating":"low",
"result":"ok",
"magento1":true,
"cloudflareCacheHit":null
}
}{
"security.magversion":{
"magento2":true,
"resultString":"CE 2.1.0 - 2.1.2",
"riskRating":"high",
"result":"fail",
"magento1":true,
"cloudflareCacheHit":null
}
}{
"security.supee6788":{
"magento2":false,
"resultString":"installed",
"riskRating":"low",
"result":"ok",
"magento1":true,
"cloudflareCacheHit":null
}
}{
"security.supee8788":{
"magento2":false,
"resultString":"unknown",
"riskRating":"low",
"result":"unkn",
"magento1":true,
"cloudflareCacheHit":null
}
}{
"security.supee9652":{
"magento2":false,
"resultString":"safe",
"riskRating":"low",
"result":"ok",
"magento1":true,
"cloudflareCacheHit":null
}
}{
"security.supee10570":{
"magento2":false,
"resultString":"patched",
"riskRating":"low",
"result":"ok",
"magento1":true,
"cloudflareCacheHit":null
}
}{
"security.supee10752":{
"magento2":false,
"resultString":"patched",
"riskRating":"low",
"result":"ok",
"magento1":true,
"cloudflareCacheHit":null
}
}{
"security.supee6285":{
"magento2":false,
"resultString":"unknown",
"riskRating":"low",
"result":"unkn",
"magento1":true,
"cloudflareCacheHit":null
}
}{
"security.supee6482":{
"magento2":false,
"resultString":"unknown",
"riskRating":"low",
"result":"unkn",
"magento1":true,
"cloudflareCacheHit":null
}
}{
"security.exposedapi":{
"magento2":true,
"resultString":"safe",
"riskRating":"low",
"result":"ok",
"magento1":false,
"cloudflareCacheHit":null
}
}{
"security.bruteforce":{
"magento2":false,
"resultString":"protected",
"riskRating":"low",
"result":"ok",
"magento1":true,
"cloudflareCacheHit":null
}
}{
"security.supee10266":{
"magento2":false,
"resultString":"backend url required",
"riskRating":"low",
"result":"unkn",
"magento1":true,
"cloudflareCacheHit":null
}
}{
"security.supee9767":{
"magento2":false,
"resultString":"unknown",
"riskRating":"low",
"result":"unkn",
"magento1":true,
"cloudflareCacheHit":null
}
}{
"security.supee10415":{
"magento2":false,
"resultString":"unknown",
"riskRating":"low",
"result":"unkn",
"magento1":true,
"cloudflareCacheHit":null
}
}{
"security.supee7405":{
"magento2":false,
"resultString":"unknown",
"riskRating":"low",
"result":"unkn",
"magento1":true,
"cloudflareCacheHit":null
}
}`;
anotherString = x.replace(/}{/g, '}\,{');
anotherString = '{ "arrayOfObjects":['+anotherString+ ']}';
console.log(anotherString);
既然您知道這反正是格式錯誤的JSON,那么執行字符串操作可能是完全可以接受的。
例如,將“ \\ n} {\\ n”替換為“ \\ n},{\\ n”(嘗試使用盡可能長的模式以減少誤報的風險,例如在某些字符串中使用} {-不應是JSON字符串中的非編碼換行符。)
如果您使用Python,則可以嘗試使用這半個json修復程序
from half_json.core import JSONFixer
s = '''{}{}{}''' # your half json
f = JSONFixer(100)
result = f.fix('['+ s.strip() + ']')
# result.success == True
datas = json.loads(result.line)
# [{},{},{}]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.