如何在Java中从多层数组中获取特定值

如何在Java中从多层数组中获取特定值,java,arraylist,gson,Java,Arraylist,Gson,我正在学习使用Java解析从PHP脚本返回的JSON提要 示例提要: {"specification":{"result":{"feature":[{"name":"attribute A","value":"50"}]}}} 我使用gson执行任务,但我很难从对象数组中访问特定值。例如,我想在数组“feature”的第一个对象中获取“name”属性A的值。但是,我收到一个“名称无法解析或不是字段”错误 这是我上的全班同学: public class Item { static c

我正在学习使用Java解析从PHP脚本返回的JSON提要

示例提要:

{"specification":{"result":{"feature":[{"name":"attribute A","value":"50"}]}}}
我使用
gson
执行任务,但我很难从对象数组中访问特定值。例如,我想在数组“feature”的第一个对象中获取“name”
属性A的值。但是,我收到一个“名称无法解析或不是字段”错误

这是我上的全班同学:

 public class Item {

    static class Model{
        HashMap <String,Item.Data> specification;
    }

    static class Data{
        ArrayList <Item.Attribute> feature[];
    }

    static class Attribute{
        String value;
        String name;
    }

    public static String show() throws Exception {

        String json = Json.fetch("http://somthing.json");

        Gson gson = new Gson(); 

        Model result = gson.fromJson(json, Model.class);

        return result.specification.get("result").feature[0].name;

    }

}
公共类项目{
静态类模型{
HashMap规范;
}
静态类数据{
阵列列表特征[];
}
静态类属性{
字符串值;
字符串名;
}
公共静态字符串show()引发异常{
字符串json=json.fetch(“http://somthing.json");
Gson Gson=新的Gson();
Model result=gson.fromJson(json,Model.class);
返回result.specification.get(“result”).feature[0]。名称;
}
}
有谁能告诉我如何获取名称
属性A
?谢谢。

上的文档可能有用。如果你不明白这一点,问题就不明显了

编辑:

我留下我最初的答案,但在这种情况下,这不是你的问题。我对GSON不太熟悉,但它似乎不像您想象的那样是
result.specification.get(“result”).feature[0]
。它是
属性的数组列表。因此,添加
get(0).name
就可以了。也就是说,如果这不是你想要做的,你可能必须重新评估你的结构。您可以在GSON文档上研究如何做到这一点:)。

上的文档可能很有用。如果你不明白这一点,问题就不明显了

编辑:

我留下我最初的答案,但在这种情况下,这不是你的问题。我对GSON不太熟悉,但它似乎不像您想象的那样是
result.specification.get(“result”).feature[0]
。它是
属性的数组列表。因此,添加
get(0).name
就可以了。也就是说,如果这不是你想要做的,你可能必须重新评估你的结构。您可以在GSON文档中研究如何做到这一点:)

规范.结果.特征[0]

我会给你

[{“名称”:“属性A”,“值”:“50”}]

这是一个包含一个元素的数组

现在

specification.result.feature[0]。名称将为您提供一个属性

规范.结果.特征[0]

我会给你

[{“名称”:“属性A”,“值”:“50”}]

这是一个包含一个元素的数组

现在

specification.result.feature[0]。名称将为您提供一个属性


你看了什么来解决这个问题?你试过什么方法?你做了什么研究?你看了什么来解决这个问题?你试过什么方法?您做了哪些研究?您的建议将导致
结果无法解析或不是字段
错误否-名称也从第[0]个元素中选取,如另一个答案所述,您的建议将导致
结果无法解析或不是字段
错误否-名称从[0]中选取另一个答案中解释的元素是
属性
类在
数据
类中未被调用?感谢指针。通过将
ArrayList
类型更改为
List
,并添加
get(0),错误消失了。name
属性
类在
数据
类中未被调用?感谢指针。通过将
ArrayList
类型更改为
List
,并添加
get(0)。name
 public class Item {

    static class Model{
        HashMap <String,Item.Data> specification;
    }

    static class Data{
        ArrayList <Item.Attribute> feature[];
    }

    static class Attribute{
        String value;
        String name;
    }

    public static String show() throws Exception {

        String json = Json.fetch("http://somthing.json");

        Gson gson = new Gson(); 

        Model result = gson.fromJson(json, Model.class);

        return result.specification.get("result").feature[0].name;

    }

}