如何从json树中使用GSON获取json值

时间:2015-11-08 18:21:25

标签: java json gson

我有一个json,如下面的

{
    "apiVersion": "v1",
    "metadata": {
        "status": {
            "statusCode": 0
        },
    },
    "stuff": [
        {
            "name": {
                "text": "red"
            },
            "properties": [
                {
                    "attributes": {
                        "shade": "dark"
                    },
                    "component": {
                        "id": "BA1",
                    }
                    "type": "Color"
                }
            ]
        },
        {
            "name": {
                "text": "Toyota Camry"
            },
            "properties": [
                {
                    "attributes": {},
                    "component": {
                        "id": "MS",
                    },
                    "type": "Vehicle"
                }
            ]
        },
    ]
}

我正在使用GSON解析结果:

Gson gson = new Gson();
JsonObject json = (JsonObject) gson.fromJson(in, JsonObject.class);
System.out.println(json.get("apiVersion").getAsString());

我可以获得apiVersion但不知道如何获取json树中的元素。例如,type ...如果我想输出所有不同的type ..在这种情况下Color and Vehicle

该怎么办?

2 个答案:

答案 0 :(得分:0)

您可以在该问题中创建一个对象并将json解析为它(使用GSON):

ParsedObject parsedObject = new Gson().fromJson(json, ParsedObject.class);

public class ParsedObject {

    @SerializedName(value = "apiVersion")
    private String mApiVersion;

@SerializedName(value = "metadata")
    private Metadata mMetadata;

}

答案 1 :(得分:0)

我必须在这里遗漏一些东西,但为什么不能将呼叫嵌套到getJsonObject?例如,要获取状态代码:

  System.out.println(json.getAsJsonObject("metadata")
                         .getAsJsonObject("status")
                         .get("statusCode").getAsInt());