如何在Java中从多层数组中获取特定值
我正在学习使用Java解析从PHP脚本返回的JSON提要 示例提要:如何在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
{"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;
}
}