Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Gson解析冻结_Java_Json_Gson - Fatal编程技术网

Java Gson解析冻结

Java Gson解析冻结,java,json,gson,Java,Json,Gson,我有这个.json类型 {"paging":{"page":1,"total":2015,"page_size":20,"pages":101}, "loans":[ { "id":519729, "name":"Hefseba Group", "description":{"languages":["en"]}, "status":"fundraising", "funded_amount":3125, "basket_amount":

我有这个.json类型

{"paging":{"page":1,"total":2015,"page_size":20,"pages":101},

"loans":[
    {
    "id":519729,
    "name":"Hefseba Group",
    "description":{"languages":["en"]},
    "status":"fundraising",
    "funded_amount":3125,
    "basket_amount":0,
    "image":{"id":1280581,"template_id":1},
    "activity":"Cafe",
    "sector":"Food",
    "use":"to buy more stock for her cafe, and to buy more fabrics and liquid soap.",
    "location":{"country_code":"TZ",
    "country":"Tanzania",
    "geo":{"level":"country","pairs":"-6 35","type":"point"}},
    "partner_id":87,
    "posted_date":"2013-02-01T09:14:17Z",
    "planned_expiration_date":"2013-03-03T09:14:17Z",
    "loan_amount":4025,
    "borrower_count":16
    },

    {
    "id":520550,"name":"Waridi Pendo Group",
    "description":{"languages":["en"]},
    "status":"fundraising",
    "funded_amount":800,
    "basket_amount":0,
    "image":{"id":1282077,"template_id":1},
    "activity":"Music Discs & Tapes",
    "sector":"Retail",
    "use":"to buy music equipment and DVDs and CDs, as well as to start building his house. ",
    "location":{"country_code":"TZ",
    "country":"Tanzania",
    "geo":{"level":"country","pairs":"-6 35","type":"point"}},
    "partner_id":87,
    "posted_date":"2013-02-01T09:18:11Z",
    "planned_expiration_date":"2013-03-03T09:18:11Z",
    "loan_amount":6100,
    "borrower_count":11
    }
]

}
然后我有这个代码试图解析它

try{
    JsonReader runThrough = getJsonReader(fileName);
    System.out.println("File found");
    Gson myGson = new Gson();
    JsonParser jsonParser = new JsonParser();
    JsonArray infoArray =  jsonParser.parse(runThrough).getAsJsonArray();
    System.out.println("Finished Parsing");
    for (JsonElement piece : infoArray){

    }
} catch (Exception e){
    System.out.println(e);
}
我希望每一笔贷款最终都保存到kLoan的arraylist中,但我现在只有一个空循环。我得到的错误在此行冻结:

JsonArray infoArray =  jsonParser.parse(runThrough).getAsJsonArray();
  • 它不是有效的JSON文件。也许这就是解析器被卡住的原因。有关详细信息,请查看JSON lint。少了一个逗号

  • 整个对象不是数组。您需要获取财产贷款并调用getAsJsonArray方法。像这样:

    try{
        JsonReader runThrough = getJsonReader(fileName);
        System.out.println("File found");
        Gson myGson = new Gson();
        JsonParser jsonParser = new JsonParser();
        JsonObject jsonObj =  jsonParser.parse(runThrough).getAsJsonObject();
        JsonArray infoArray = jsonObj.getAsJsonArray("loans");
        System.out.println("Finished Parsing");
        for (JsonElement piece : infoArray){
    
        }
    } catch (Exception e){
        System.out.println(e);
    }
    

  • loans
    列表末尾有一个逗号。@santiagobasulto-大多数(如果不是所有的话)JSON解析器都会忽略多余的逗号。我认为在计划的到期日之后缺少逗号可能是真正的问题。@schlingel-请看我对您的回复answer@rmlan并非所有解析器都会忽略超复数逗号。发生这种情况是很糟糕的。1实际上是不可能的,所以我假设这是OP.GSON的
    JsonParser
    在一个未终止的字段上抛出一个
    MalformedJsonException
    。然而,2是绝对正确的。我认为逗号不是问题所在。关于#2,我如何调用它来运行GetAsJsonArray?@user2044299查看我编辑的答案。这很简单。有关更多问题,请参阅文档:顺便说一句:您还可以定义模型类,并让GSON解析器为您执行提取工作。