2015-09-06 51 views
1

我想知道如何從Json對象中獲得更多細節。如何獲取Json對象中的細節?

這是JSON文件:

{ 
    "Shapes": "Models", 
    "Square": { 
     "Length": 10 
    }, 
    "Rectangle": { 
     "Length": 10, 
     "Width": 20 
    }, 
    "Circle": { 
     "Radius": 5 
    }, 
    "Equilateral": { 
     "Side": 10 
    }, 
    "Scalene": { 
     "Side1": 10, 
     "Side2": 5, 
     "Side3": 3 
    }, 
    "Isosceles": { 
     "Side1": 10, 
     "Side2": 5, 
     "Side3": 5 
    } 
} 

我的代碼如下所示:

public static void main(String[] args) { 
    JSONParser parser = new JSONParser(); 
    try { 
     Object obj = parser.parse(new FileReader("filepath")); 
     JSONObject jsonObject = (JSONObject) obj; 
     Object Square = jsonObject.get("Square"); 
     System.out.println("Square: " + Square); 
     Object Rect = jsonObject.get("Rectangle"); 
     System.out.println("Rectangle: " + Rect); 
    } 

的O/P是像

Square: {"Length":10} 
Rectangle: {"Length":10,"Width":20} 

我希望得到這樣的進一步細節「長度/寬度/半徑」

+0

您引用的JSON的關鍵「Square」列出了兩次。雖然我認爲這是有效的JSON,但這意味着您無法訪問第一個,而只能訪問第二個。 –

+0

我做了必要的修改。我只想要1平方,並且添加第二個來測試我的代碼。謝謝。 –

回答

0

示例JSON中的Square,Rectangle等屬性均爲具有其自己屬性的JSONObjects。要訪問這些JSON對象上的屬性,請將對象轉換爲JSONObject實例以訪問其方法。

(JSONObject) Square = (JSONObject)jsonObject.get("Square"); 
    System.out.println("Square: " + Square); 
    System.out.println("Square: Length=" + Square.get("Length")); 

    JSONObject rect = (JSONObject)jsonObject.get("Rectangle"); 
    System.out.println("Rectangle: " + rect); 
    System.out.printf("Rectangle: Length=%s Width=%s%n", 
     rect.get("Length"), rect.get("Width")); 

順便說一句,如果希望有重複鍵(例如多發性方),那麼你需要表示數據作爲陣列(或列表)與一個地圖,使形狀類型的形狀細節的屬性(長度,寬度等)。

[ 
    { "shape": "Square", 
    "Length": 6 
    }, 
    { "shape": "Square", 
    "Length": 10 
    } 
    ] 
+0

太棒了!謝謝:) –

+0

第二個廣場實際上並不需要。我用它來進行測試。我相應地編輯了我的Json代碼。再次感謝。 –