在java中合并json对象

时间:2017-11-20 08:05:53

标签: java json list arraylist merge

我有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?

3 个答案:

答案 0 :(得分: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。

答案 1 :(得分:0)

我建议你的Ovject1类有3个属性:name,age和surname。我也建议它有吸气剂和制定者。

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

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

答案 2 :(得分:0)

使用Jackson从你的Object1 / Object2 ... ObjectN制作一个Map然后合并Maps,它也被称为map / reduce pattern。

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

缩小阶段:合并地图对象

您可以选择将结果Map序列化到您的域类。

看看这个例子,它确实做了你想做的事:https://dumpz.org/2707215/