簡體   English   中英

如何解析對象之間沒有逗號分隔的JSON字符串?

[英]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 <-檢查控制台

這是可編輯的示例:

https://stackblitz.com/edit/js-ei2iz2

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM