我有一个具有四个属性的Java对象,我想根据List<Map<String,String>>
的结果设置这些属性。
Java类:
class Fruit{
private String apple;
private String banana;
private String mango;
private String orange;
//getter and setters
}
我有一个方法以List<Map<String, String>>
的形式返回数据:
[
{"apple":"sweet","banana":"less sweet","mango":"more sweet","orange":"citric"},
{"apple":"less sweet","banana":"more sweet","mango":" sweet","orange":"less citric"}
]
我的任务是将这些值映射到Java类对象,以便可以从主方法中返回,例如List<Fruit>
:
public List<Fruit> getfruits(){
Fruit f=new Fruit();
List<Map<String,String>> data=getdetails(returns List<Map<String,String>>)
for(int i=0;i<data.size;i++){
Map<String,String> map=data.get(i);
//Now I want to iterate my map in a such way that it adds objects to my java class and return a list of Fruit object:
//mapping to getter and setters of my Fruit class
f.setApple(map.get("apple"));
f.setMango(map.get("mango");
f.setBanana(map.get("banana");
f.setOrange(map.get("orange");
//But I don't want to hardcode the values in getter and setter methods
}
}
答案 0 :(得分:1)
您可以在 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>>() {});
答案 1 :(得分:0)
您可以使用反射。 直 或通过Apache Commons BeanUtils(PropertyUtils。get / setProperty) 或通过其他方式。
答案 2 :(得分:0)
也许像这样:
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;
}
编辑:没有看到您不希望它们进行硬编码,因此您需要采用其他方法来设置值。也许制作一个set()方法,该方法具有一个有关要保存的内容和值的参数。
编辑2 :为什么在Fruit类中不仅有一个map变量,而且还没有一种基于键的获取和设置方法?