简体   繁体   English

将JSon字符串数组映射到Pojo

[英]Mapping an array of JSon string into Pojo

Everytime I map an array of JSON object into POJOs, I always get the last object. 每当我将JSON对象数组映射到POJO时,我总是得到最后一个对象。

The JSON is an array of objects, and I have a POJO associate with each object of JSON. JSON是一个对象数组,并且我有一个POJO与JSON的每个对象关联。 But when I mapped into an array of POJO, I always get 1 object. 但是当我映射到POJO数组中时,总是得到1个对象。

Here is the JSON : 这是JSON:

[ {                                                                     
  "event" : {                                                           
    "Id" : "123456789",                                        
    "Name" : "An event1 name"                                          
  },                                                                    
  "branch" : {                                                        
    "Id" : "112233445566",                                        
    "Name" : "A branch1 name",                                       
  },                                                                    
  "user" : {                                                            
    "Id" : "9988776655",                                        
    "FirstName" : "John",                                         
    "LastName" : "Doe",                                              
  },                                                                    
  "event" : {                                                           
    "Id" : "abcdef",                                        
    "Name" : "An event2 name"                                          
  },                                                                    
  "branch" : {                                                        
    "Id" : "885522",                                        
    "Name" : "A branch2 name",                                       
  },                                                                    
  "user" : {                                                            
    "Id" : "996633",                                        
    "FirstName" : "Jane",                                         
    "LastName" : "Doe",                                              
  }                                                                     
} ]      

The POJOs: POJO:

public class RdV {

    private Event event;
    private Branch branch;
    private User user;

    public Event getEvent() {
        return event;
    }
    public void setEvent(Event event) {
        this.event = event;
    }
    public Branch getBranch() {
        return branch;
    }
    public void setBranch(Branch branch) {
        this.branch= branch;
    }
    public User getUser() {
        return user;
    }
    public void setUser(User user) {
        this.user = user;
    }   

    @Override
    public String toString() {
        return "RdV [\n" 
            + event + "\n" 
            + branch + "\n" 
            + user + "\n"
            + "]";
    }   
}

public class Event {

    private String id;  
    private String name;

    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name= name;
    }   
}

The other POJOS, Branch and User are similar to Event. 其他POJOS,Branch和User与Event类似。

And when I use the following : 当我使用以下内容时:

List<RdV> rdv = Arrays.asList(objectMapper.readValue(jsonString, RdV[].class));

all I got is just the last object ( the size of list is 1, instead of 2 ): 我得到的只是最后一个对象(列表的大小是1,而不是2):

==> RdV [                              
 Event {                               
  id="abcdef",               
  name="An event2 name"
 }                                      
 Branch {                            
  id="885522",               
  name="A branch2 name"              
 }                                      
 User {                                
  id="996633",               
  lastName="Doe",                     
  firstName="Jane"
}                                      
] 

Any idea what went wrong the code ? 知道代码出了什么问题吗?

Thanks. 谢谢。

your JSON doesn't have two separate objects - just one with double properties of Branch, Event and User, you should change it to 您的JSON没有两个单独的对象-只有一个具有Branch,Event和User双重属性的对象,您应该将其更改为

[
  {
    "event": {
       "Id": "123456789",
       "Name": "An event1 name"
     },
    "branch": {
       "Id": "112233445566",
       "Name": "A branch1 name"
    },
    "user": {
       "Id": "9988776655",
       "FirstName": "John",
       "LastName": "Doe"
    }
  },
  {
   "event": {
      "Id": "abcdef",
      "Name": "An event2 name"
  },
  "branch": {
    "Id": "885522",
    "Name": "A branch2 name"
  },
  "user": {
    "Id": "996633",
    "FirstName": "Jane",
    "LastName": "Doe"
   }
 }
]      

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM