【问题标题】:Merging json objects in java [closed]在java中合并json对象[关闭]
【发布时间】:2018-05-03 09:41:30
【问题描述】:

我有 List 的 json 对象和 List 的字符串:

List<Object1> list1 带有此参数:NameAge

List<String> list2 带参数:Surname;

所以我想以这种格式创建对象列表:

姓氏来自List1,姓名和年龄来自List2

List 1 = [{Name: "John"; Age:28;}, {Name: "Mery" Age:22}]
List 2 = [{Surname: "Junior"}, {Surname: "Constant"}]
List 3 = [{Surname: "Junior" Name:"John" Age: 28} , {Surname:"Constant" , Name:"Mery", Age:22}]

那么如何创建第三个List呢?

【问题讨论】:

标签: java json list arraylist merge


【解决方案1】:

您可以创建一个具有三个属性 Object3: {Surname, Name, Age} 的新对象并创建一个新列表并使用循环读取 list1list2 的值并填充第三个列表。(假设它们是相同的大小)

public class Object3 {
     String Sirname; 
     String Name; 
     String Age;

     public Object3(String sirname, String name, String age) {
         Sirname = sirname;
         Name = name;
         Age = age;
     }
     //getters and setters
}

然后遍历它们:

public List<Object3> mergeLists(List<Object1> list1, List<String> list2){
    int size =  list1.size();
    List<Object3> list3 = new ArrayList<Object3>(size);
    for ( int i = 0; i < size; i++){
        Object3 obj = new Object3(list2.get(i),
            list1.get(i).getName(),
            list1.get(i).getAge());
        list3.add(obj); 
    }
}

或者只是简单地将Surname 属性添加到Object1 并遍历list2 以添加Sirnames。

【讨论】:

  • Java 类中的属性必须以小写字符开头
【解决方案2】:

我建议您的 Ovject1 类具有 3 个属性:姓名、年龄和姓氏。我也建议它有 getter 和 setter。

您可以在两个列表上执行相同的循环,然后从第二个列表中获取数据并放在第一个列表中。您可以检查这两个列表之前是否具有相同的大小。

int size=list1.size();
List<Object1> list3 = new ArrayList<Object1>();
for(int i=0;i < size;i++){
    object1 = list1.get(i);
    object1.setSurname(list2.get(i));
    list3.add(object1);
}

【讨论】:

    【解决方案3】:

    使用 Jackson 从您的 Object1/Object2...ObjectN 制作地图,然后合并地图,这也称为地图/减少模式。

    Map 阶段:将您的对象转换为 java.util.Map 的实例

    Reduce 阶段:合并 Map 对象

    您可以选择将结果映射再次序列化到您的域类。

    查看此示例,它确实可以满足您的需求:https://dumpz.org/2707215/

    【讨论】:

    • 我得到了那个代码,但我在 List.of 上有一个错误:此行有多个标记 - 未定义 List 类型的方法 of(JacksonDemo.UserPersonalDetails, JacksonDemo.UserPersonalDetails) - 行断点:JacksonDemo [line: 55] - main(String[])
    • 使用 java9 或用 Java8 模拟替换 List.of
    猜你喜欢
    • 2021-02-18
    • 1970-01-01
    • 2023-04-07
    • 2016-03-09
    • 1970-01-01
    • 2021-10-26
    • 2016-01-26
    • 2013-07-08
    • 2015-08-03
    相关资源
    最近更新 更多