2015-11-26 44 views
0

內JSONArray一個JSONObjects我是新與Java JSON和我有一個JSON看起來像這樣:得到一個JSONArray

[{ 
    "color": red, 
    "numbers": [ 
     "8967", 
     "3175", 
     "1767" 
    ], 
}, { 
    "color": blue, 
    "numbers": [ 
     "1571", 
     "5462", 
     "54" 
    ] 
}] 

和代碼,試圖提取顏色和數字:

while(i<jsonArray.size()){ 
JSONObject object = (JSONObject) jsonArray.get(i); 
colors = object.get("color"); 
numbers.add(object.get("numbers"); 

的顏色得到提取不錯,但我的問題是我想提取數字並將它們放置1 1的陣列,而是把他們像這樣的:

numbers[0]="8967" 
numbers[1]="3175" 

他們得到安置是這樣的:

numbers[0]={"8967","3175","1767"} 

我怎樣才能讓他們通過如上1放置1?

回答

0

你問了nunbers字段,它是一個JSON數組,因此它將JSON數組添加到最低點單元格。 嘗試運行「數字」數組的值。 或 不太確定 - 嘗試使用addAll方法而不是add。

0

您可以嘗試使用此代碼:

import org.json.simple.JSONArray; 
import org.json.simple.JSONObject; 
import org.json.simple.parser.JSONParser; 
import org.json.simple.parser.ParseException; 

import java.io.BufferedReader; 
import java.io.FileReader; 
import java.io.IOException; 
import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.List; 
import java.util.Map; 

public class JSONParserExample { 

    public static void main(String[] args) { 
     JSONArray jsonArray = null; 
     try (BufferedReader input = new BufferedReader(new FileReader("src/main/resources/example.json"))) { 
      JSONParser parser = new JSONParser(); 
      jsonArray = (JSONArray) parser.parse(input); 
     } catch (IOException | ParseException e) { 
      System.out.println("Failed to load properties from file."); 
     } 


     Map<String, List<String>> values = new HashMap<>(); 
     for (Object obj : jsonArray) { 
      JSONObject jsonObj = (JSONObject) obj; 

      String color = (String) jsonObj.get("color"); 
      JSONArray numbersJSON = (JSONArray) jsonObj.get("numbers"); 

      List<String> numbers = new ArrayList<>(); 
      for (Object o : numbersJSON) { 
       numbers.add((String) o); 
      } 
      values.put(color, numbers); 
     } 

     for (Map.Entry<String, List<String>> entry : values.entrySet()) { 
      System.out.printf("[Key, Value]: %s, %s \n", entry.getKey(), entry.getValue()); 
     } 
    } 
}