Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何迭代列表<;地图<;字符串,字符串>&燃气轮机;并将其键、值添加到Java对象中_Java_Json_Hashmap - Fatal编程技术网

如何迭代列表<;地图<;字符串,字符串>&燃气轮机;并将其键、值添加到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对象,它有四个属性,我想根据
列表的结果设置这些属性

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>>() {});