簡體   English   中英

JSON 解析錯誤 Java org.json JSONObject not found

[英]JSON parsing error with Java org.json JSONObject not found

我有一個 JSON 字符串,我想用 org.json 庫解析它:

JSONObject jason_clean = new JSONObject(unzipped);
        JSONArray array = jason_clean.getJSONArray("setlists");
        for (int i=0; i< array.length(); i++) {
            JSONObject tempObject = array.getJSONObject(i);
            JSONObject meta_object = tempObject.getJSONObject("meta");
            String bank_name = meta_object.getString("name");
            System.out.println(bank_name);

            JSONArray presets_array = tempObject.getJSONArray("presets");
            System.out.println("presets_array.length(): "+presets_array.length());
            
            for (int j=0; j< presets_array.length(); j++) {
                JSONObject temp_preset_Object = presets_array.getJSONObject(j);
                //if (temp_preset_Object.has("meta")) {
                JSONObject meta_preset_object = temp_preset_Object.getJSONObject("meta");
                String preset_name = meta_preset_object.getString("name");
                System.out.println("BANK: "+i+" - "+bank_name+" || "+j+" - "+preset_name);
                //}
                
            }
        
        }

我得到了許多預期的結果,但它停止並出現以下錯誤堆棧:

Exception in thread "main" org.json.JSONException: JSONObject["meta"] not found.
    at org.json.JSONObject.get(JSONObject.java:573)
    at org.json.JSONObject.getJSONObject(JSONObject.java:766)
    at ZLibCompression.main(ZLibCompression.java:68)

然后我嘗試測試是否存在“元”對象(在上面的代碼中注釋掉)。 現在解析器運行到字符串的末尾,但缺少許多條目。 (不僅在那個時候,它之前已經停止了。)我已經使用軟件驗證器驗證了 JSON 字符串(並且我的 python 腳本可以以預期的方式處理整個字符串。)我是 Z0ECD11C1D7A287401D148A2 的新手,所以我不要'不知道,如果它可能是解析器問題,或者我的代碼中是否有錯誤來處理這個特定的字符串。 我在這里鏈接了 JSON-String-file。 (8.6 MB)

我添加了成功解析元素的格式化 output

以下是 JSON 字符串的一些片段,它們已解析或未解析(未找到 JSONObject["meta"]):

有例外(JSON 字符串中的第 213784 行):

{
     "device" : 2162692,
     "device_version" : 50397184,
     "meta" : {
      "build_sha" : "39f7f9a",
      "name" : ""
     },

無一例外(JSON 字符串中的第 304922 行):

{
     "device" : 2162692,
     "device_version" : 50397184,
     "meta" : {
      "build_sha" : "v2.81-16-gbdc0fd8",
      "name" : ""
     },

有例外(JSON 字符串中的第 176330 行):

{
     "device" : 2162692,
     "device_version" : 50397184,
     "meta" : {
      "build_sha" : "561c612",
      "name" : "SLAP Punch"
     },

這里失敗了——> JSONObject meta_preset_object = temp_preset_Object.getJSONObject("meta");

--- USER 4 下的預設沒有元。

    "meta": {
        "name": "USER 4"
    },
    "presets": []

您的預設應該具有與所有其他類似的數據:

“設備”:,“設備版本”:,“元”:{“build_sha”:“”,“名稱”:“”},

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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