2016-09-18 99 views
0

我對這個問題有點無知,但我試圖用一些GSON解析一些Json變量。解析Json與兒童參數

這裏是JSON的,我試圖解析的一部分的例子。我們的目標是獲得含有.OGG路徑對象數組(即「的Minecraft /聲音/暴民/雜散/ death2.ogg」)以及其相應的散列變量。

{ 
    "objects": { 
    "minecraft/sounds/mob/stray/death2.ogg": { 
     "hash": "d48940aeab2d4068bd157e6810406c882503a813", 
     "size": 18817 
    }, 
    "minecraft/sounds/mob/husk/step4.ogg": { 
     "hash": "70a1c99c314a134027988106a3b61b15389d5f2f", 
     "size": 9398 
    } 
} 

任何關於如何使用GSON獲得此類結果的幫助或建議將不勝感激。

回答

0

Xeyeler,以下是將工作的解決方案。更好的方法是查看GSON如何將其直接轉換爲對象。我還沒有嘗試過,雖然

import java.util.Map; 

import com.google.gson.JsonElement; 
import com.google.gson.JsonObject; 
import com.google.gson.JsonParser; 

public class MainProgram { 

    public static void main(String[] args) { 
     String mineCraft = "{ \"objects\": { \"minecraft/sounds/mob/stray/death2.ogg\": {  \"hash\": \"d48940aeab2d4068bd157e6810406c882503a813\",  \"size\": 18817 }, \"minecraft/sounds/mob/husk/step4.ogg\": {  \"hash\": \"70a1c99c314a134027988106a3b61b15389d5f2f\",  \"size\": 9398 }}}"; 
     JsonParser parser = new JsonParser(); 
     JsonObject objects = parser.parse(mineCraft).getAsJsonObject().get("objects").getAsJsonObject(); 

     for (Map.Entry<String, JsonElement> entry : objects.entrySet()) { 
      String oggFileName = entry.getKey(); 
      JsonElement attributes = entry.getValue(); 
      System.out.println(
        "Key is " + oggFileName + " and the hash value is " + attributes.getAsJsonObject().get("hash")); 
     } 
    } 

}