簡體   English   中英

使用 json-simple 解析 Java 中的 JSON 文件

[英]Parsing a JSON file in Java using json-simple

我創建了一個 .json 文件:

{
  "numbers": [
    {
      "natural": "10",
      "integer": "-1",
      "real": "3.14159265",
      "complex": {
        "real": 10,
        "imaginary": 2
      },
      "EOF": "yes"
    }
  ]
}

我想用 Json Simple 來解析它,以便提取“自然”和“想象”的內容。

這是我到目前為止所寫的:

JSONParser parser = new JSONParser();
Object obj = parser.parse(new FileReader("...")); //the location of the file
JSONObject jsonObject = (JSONObject) obj;
String natural = (String) jsonObject.get("natural");
System.out.println(natural);

問題是 natural 的值是“null”而不是“10”。 當我寫 jsonObject.get("imaginary") 時也會發生同樣的事情。

我查看了許多網站(包括 StackOverflow),我遵循大多數人編寫的相同方式,但我無法解決這個問題。

您需要首先在數組中找到JSONObject 您正在嘗試查找頂級JSONObject natural字段,該字段僅包含字段numbers因此它返回null因為它無法找到natural

要解決此問題,您必須先獲取數字數組。

試試這個:

JSONParser parser = new JSONParser();
Object obj = parser.parse(new FileReader("...")); //the location of the file
JSONObject jsonObject = (JSONObject) obj;
JSONArray numbers = (JSONArray) jsonObject.get("numbers");

for (Object number : numbers) {
    JSONObject jsonNumber = (JSONObject) number;
    String natural = (String) jsonNumber.get("natural");
    System.out.println(natural);
}

文件中的對象只有一個屬性,名為numbers
沒有natural財產。

您可能想要檢查該數組中的對象。

加上@Jermey Hanion 的回答和評論,這是我為獲得“虛構”和“自然”所做的事情

JSONParser parser = new JSONParser();
Object obj = parser.parse(new FileReader("...")); //the location of the file
JSONObject jsonObject = (JSONObject) obj;
JSONArray numbers = (JSONArray) jsonObject.get("numbers");

for (Object number : numbers) {
    JSONObject jsonNumber = (JSONObject) number;
    String natural = (String) jsonNumber.get("natural");
    JSONObject complex = (JSONObject) jsonNumber.get("complex");
    String imaginary = (String) complex.get("imaginary");
    System.out.println(natural);
}

Jeremey 關於獲得想象的答案是不正確的,或者它可能正確的。 據我所知,上面的代碼片段是在我的項目上工作的。

PS。 很抱歉恢復線程,但我認為這對於希望學習 JSON.simple 的人來說是一個有用的資源

暫無
暫無

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

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