如何将JSON数据作为多个对象检索

时间:2019-04-09 18:30:29

标签: java json spring

我正在尝试将用户添加到组中,然后返回所有这些用户,并使用刚刚添加到的组更新其groupid。我遇到的麻烦是,我似乎无法将JSON数据传递到我的方法中以更改每个用户的groupid字段。

我尝试使用JSONObjectJSONArray,但是由于我不熟悉它,所以我不太确定我是否使用正确。

@PostMapping(value = "/update")
    public List<User> updateGroupID(@RequestBody List<User> incomingusers, Integer groupid) {
        List<User> newUserList = new ArrayList<User>();
        for(User updateduser : incomingusers){
            updateduser.setGroupID(groupid);
            userRepo.save(updateduser);
            newUserList.add(updateduser);
        } 
        return newUserList;
    }

这是从控制台发送到我的方法的JSON输出。管理多个用户是我遇到的麻烦。

data:
0: {username: "seanuser", userTypeID: 2, groupID: null, password: "password", email: "sean@gmail.com", …}
1: {username: "noahuser", userTypeID: 2, groupID: null, password: "password", email: "noah@gmail.com", …}
groupID: 3

这是应该返回用户和组ID的代码

  saveGroupHandler = () => {
    const groupID= this.state.groupId;
    const updatedGroup = {...this.state.groupToEdit};
    console.log(updatedGroup)
    this.setState(state=>({groupSaved:!state.groupSaved})) 
    axios.post(`http://localhost:8080/user/update/${groupID}`,updatedGroup)
    .then(response=>console.log(updatedGroup))
    .catch(error =>console.log(error));
  }

我希望将这些用户放入我的User类型的列表中,以便随后可以更新groupid

这是我得到的输出:

Can not deserialize instance of java.util.ArrayList out of START_OBJECT token

1 个答案:

答案 0 :(得分:0)

如果您具有上面@Taavi Kivimaa提到的有效JSON字符串,则可以像这样反序列化它:

private ObjectMapper objectMapper = new ObjectMapper();
List<Usere> users = readValue(jsonString, new TypeReference<List<User>>() {});

当然,您需要将其包装在try-catch块中。