我已经学会使用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
?谢谢。
答案 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