2012-08-09 72 views
5

編輯:我改變了json文件的樣式,使其更簡單,因爲我無法使用舊版本。我需要能夠在java中創建一個目標數組,其中數組中的每個元素的名稱都是Target_Name的值。我還需要能夠合併具有不同對象名稱的重複目標名稱。所以基本上我想要一個目標數組,並且在每個元素中我想擁有一個包含Type,Pin_number和capabilities的對象數組。需要幫助使用gson解析json文件

我知道我可能必須創建一個目標列表類,並在目標名稱和其他所有變量。我曾嘗試過類似的方式,但我很難弄清楚它會如何工作。

{ 
"Targets": [ 
    { 
     "Target_Name": "----", 
     "Object_Name": "----", 
     "Type": "----", 
     "Pin_Number": "----", 
     "Capabilities": "----" 
    }, 
    { 
     "Target_Name": "----", 
     "Object_Name": "----", 
     "Type": "----", 
     "Pin_Number": "----", 
     "Capabilities": "----" 
    }, 
    { 
     "Target_Name": "----", 
     "Object_Name": "----", 
     "Type": "----", 
     "Pin_Number": "----", 
     "Capabilities": "----" 
    }, 
    { 
     "Target_Name": "----", 
     "Object_Name": "----", 
     "Type": "----", 
     "Pin_Number": "----", 
     "Capabilities": "----" 
    } 
] 

}

+1

什麼熱烈歡迎StackOverflow的我的朋友@CodeDroid。也許爲非首次使用者保存? – 2012-08-09 00:04:00

回答

2

它是非常簡單的,下面是一些代碼如何加載和讀取節點。它將幫助您瞭解如何查詢您的數據。

Reader reader = null; 
InputStream stream = context.getResources() 
    .openRawResource(R.raw.json_file); 
reader = new BufferedReader(new InputStreamReader(stream), 8092); 

// parse json 
JsonParser parser = new JsonParser(); 
JsonObject jsonObj = (JsonObject)parser.parse(reader); 

//你的JSON解析是要看起來像下面的如何讀取數值

JsonArray targets= jsonObj.getAsJsonArray("Targets"); 

List<Target> targetList = new ArrayList<Target>(); 
for (JsonElement target: targets) { 

    JsonObject targetObject = target.getAsJsonObject(); 
    String targetName= targetObject.get("Target_Name").getAsString(); 
    ....//get the rest 

    // create target object 
    targetList.add(new Target(targetName, ....)); 
} 

//實例和查詢對象

for (Entry<String, JsonElement> entry : rootElem.entrySet()) 
{ 
    int key = Integer.parseInt(entry.getKey()); 
    JsonObject jsonObject = entry.getValue().getAsJsonObject(); 
} 


// get integer element 
int key = Integer.parseInt(entry.getKey()); 

// get child object 
JsonObject jsonObject = entry.getValue().getAsJsonObject(); 

// get string element   
String title = jsonObject.get("Object_Name").getAsString(); 
+0

文件不是原始資源。我有一個http連接到谷歌雲,並有一個URL到JSON文件。問題是解析這個文件並保存這些變量供以後使用。我會盡力實現你提到的其他事情。 – zms6445 2012-08-09 00:23:05

+0

@ user1586194不管什麼是json文件的來源,只要從Reader的任何地方讀取它即可,或者直接讀取String或給JsonParser.parse()方法。 – Maxim 2012-08-09 00:25:32

+0

JsonParser和JsonObject不是包含在android sdk中的json類的一部分嗎? gson是否有相同的? – zms6445 2012-08-09 00:28:13