在java中合并json对象

在java中合并json对象,java,json,list,arraylist,merge,Java,Json,List,Arraylist,Merge,我有json对象的List和字符串的List: 使用以下参数列出列表1:名称,年龄 列表列表2带参数:姓氏 因此,我想创建以下格式的对象列表: 列表1中的姓氏和列表2中的姓名和年龄 List 1 = [{Name: "John"; Age:28;}, {Name: "Mery" Age:22}] List 2 = [{Surname: "Junior"}, {Surname: "Constant"}] List 3 = [{Surname: "Junior" Name:"John" Age: 2

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

使用以下参数列出列表1
名称
年龄

列表列表2
带参数:
姓氏

因此,我想创建以下格式的对象列表:

列表1中的姓氏和
列表2中的姓名和年龄

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}]

那么如何创建第三个列表呢?

我建议Ovject1类有3个属性:名称、年龄和姓氏。我也认为它有能手和二传手

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

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);
}
int size=list1.size();
List list3=新的ArrayList();
对于(int i=0;i
使用Jackson从您的Object1/Object2…ObjectN创建一个映射,然后合并映射,它也被称为Map/reduce模式

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

减少阶段:合并贴图对象

或者,您可以再次将结果映射序列化到域类


看看这个例子,它确实做了你想做的事情:

你可以创建一个新对象,它有三个属性
Object3:{姓氏,姓名,年龄}
,并创建一个新列表,使用循环读取
list1
list2
的值,然后填充第三个列表。(假设它们大小相同)

然后在它们上面循环:

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); 
    }
}
公共列表合并列表(列表1、列表2){
int size=list1.size();
List list3=新阵列列表(大小);
对于(int i=0;i

或者只需将
姓氏
属性添加到
Object1
中,然后在列表2上循环添加Sirnames即可

您的问题是?我想知道如何创建第三个列表您需要编写一些代码…并定义一些类来表示您的对象。可能的属性副本必须以Java类中的小写字符开头我得到了该代码,但我在列表中有一个错误。of:此行有多个标记-方法(JacksonDemo.UserPersonalDetails,JacksonDemo.UserPersonalDetails)未定义类型列表-行断点:JacksonDemo[Line:55]-main(String[])使用java9或将List.of替换为Java8模拟
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); 
    }
}