用儿童参数解析Json

时间:2016-09-18 02:32:58

标签: java json gson

我对这个问题有点无能为力,但我正在尝试使用GSON将一些Json解析为变量。

这是我试图解析的Json的一部分示例。目标是获得一个包含.ogg路径的对象数组(即“minecraft / sounds / mob / stray / death2.ogg”)及其对应的哈希变量。

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

有关如何通过GSON获得此类结果的任何帮助或建议将不胜感激。

1 个答案:

答案 0 :(得分: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"));
        }
    }

}