2016-09-18 71 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")); 
     } 
    } 

}