如何从Java

时间:2016-02-16 14:39:59

标签: java arraylist gson

我已经学会使用Java来解析从PHP脚本返回的JSON提要。

示例Feed:

{"specification":{"result":{"feature":[{"name":"attribute A","value":"50"}]}}}

我使用gson执行任务,但我正在努力从对象数组中访问特定值。例如,我想在数组“feature”的第一个对象中获取“name”attribute A的值。但是我收到“名称无法解析或不是字段”错误。

    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; //Error : name cannot be resolved or not a field
    }

以下是我上课的全部课程:

 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;

    }

}

有谁能告诉我如何获得名称attribute A?谢谢。

2 个答案:

答案 0 :(得分:1)

controlling access to members上的文档可能很有用。如果你不明白这个问题,这个问题就不明显了。

编辑:

我要留下原来的答案,但在这种情况下,这不是你的问题。我对GSON并不太熟悉,但似乎result.specification.get("result").feature[0]不是你的想法。它是Attribute的ArrayList。因此,添加get(0).name应该可以解决问题。话虽这么说,如果那不是你想要做的,你可能不得不重新评估你的结构。您可以在GSON文档上进行有关如何执行此操作的研究:)。

答案 1 :(得分:1)

  

specification.result.feature。[0]

会给你

  

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

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

现在

  

specification.result.feature。[0] .name将为您提供属性A