如何迭代列表<;地图<;字符串,字符串>&燃气轮机;并将其键、值添加到Java对象中
我有一个Java对象,它有四个属性,我想根据如何迭代列表<;地图<;字符串,字符串>&燃气轮机;并将其键、值添加到Java对象中,java,json,hashmap,Java,Json,Hashmap,我有一个Java对象,它有四个属性,我想根据列表的结果设置这些属性 Java类: class Fruit{ private String apple; private String banana; private String mango; private String orange; //getter and setters } 我有一个方法,它以列表的形式返回数据: 我的任务是将这些值映射到我的Java类对象,这样我就可以从我的主方
列表的结果设置这些属性
Java类:
class Fruit{
private String apple;
private String banana;
private String mango;
private String orange;
//getter and setters
}
我有一个方法,它以列表的形式返回数据:
我的任务是将这些值映射到我的Java类对象,这样我就可以从我的主方法返回,比如List
:
public List getfruits(){
水果f=新水果();
列表数据=获取详细信息(返回列表)
对于(inti=0;i可以使用反射。
直接地
或者通过Apache Commons BeanUtils(.get/setProperty)
或者通过其他方式。可能类似于:
public List<Fruit> getFruits() {
List<Fruit> fruits = new ArrayList<Fruit>();
for (Map<String, String> m : data) {
Fruit f = new Fruit();
f.setApple(m.get(“apple”));
f.setMango(m.get(“mango”));
f.setBanana(m.get(“banana”));
f.setOrange(m.get(“orange”));
fruits.add(f);
}
return fruits;
}
public List getFruits(){
列表结果=新的ArrayList();
用于(地图m:数据){
水果f=新水果();
f、 苹果树;
f、 setMango(m.get(“芒果”));
f、 setBanana(m.get(“香蕉”));
f、 橙黄色(m.get(“橙色”));
添加(f);
}
还果;
}
编辑:没有看到您不希望它们硬编码,因此您需要使用不同的方法设置值。也许可以创建一个set()方法,该方法包含一个参数,用于保存内容和值
编辑2:为什么不在水果类中只使用一个映射变量,并且只使用一个基于键的获取和设置方法呢?您可以在ObjectMapper的帮助下执行此操作
ObjectMapper mapper = new ObjectMapper();
List<Map<String,String>> dataMap = new ArrayList<>();
String json = objectMapper.writeValueAsString(dataMap);
List<Fruit> fruits = mapper.readValue(json, new TypeReference<List<Fruit>>() {});
ObjectMapper mapper=new ObjectMapper();
List dataMap=new ArrayList();
字符串json=objectMapper.writeValueAsString(数据映射);
List fruits=mapper.readValue(json,new-TypeReference(){});
2件事,第一件请格式化帖子,第二件有关于jackson或Gson的任何想法吗?欢迎来到StackOverflow。我修复了您的格式;请查看您的帖子,看看我做了什么来更正它。很抱歉,我实际上是新手。我正在获取所有数据,但只想将其附加到我的java对象中。谢谢@JimGarrison:)除了命名之外(为什么一个水果有一个苹果和一个橘子?我不知道,它不应该是一个篮子吗?)事实上,你创建了一个水果,而不是为列表中的每个元素创建一个水果,你所拥有的一切都很好,基本上是你所能做的最好的。代码的具体问题是什么?是的,问题是,最终我必须对类进行排序。假设我的类有一个属性“purChaseDate”,我必须根据这个属性对对象进行排序。我想地图不会有那么大的效率。
public List<Fruit> getFruits() {
List<Fruit> fruits = new ArrayList<Fruit>();
for (Map<String, String> m : data) {
Fruit f = new Fruit();
f.setApple(m.get(“apple”));
f.setMango(m.get(“mango”));
f.setBanana(m.get(“banana”));
f.setOrange(m.get(“orange”));
fruits.add(f);
}
return fruits;
}
ObjectMapper mapper = new ObjectMapper();
List<Map<String,String>> dataMap = new ArrayList<>();
String json = objectMapper.writeValueAsString(dataMap);
List<Fruit> fruits = mapper.readValue(json, new TypeReference<List<Fruit>>() {});