Формат Gson Java Список объектов в требуемый формат JSON - PullRequest
0 голосов
/ 18 июня 2020

Я получаю список объектов из функции:

    public List<User> getUserByOrgId(String name) {
        Session session = this.sessionFactory.getCurrentSession();
        String queryString="select code,name from User where org=:name";
        Query query= sessionFactory.getCurrentSession().createQuery(queryString);
        query.setParameter("name", name);
        List<User> users= (List<User>) query.list();
        return users;
    }

Он будет возвращен вызывающей функции, которая сохранит результат в списке объектов, а затем проанализирует его в Json с помощью Gson

public ResponseEntity<String> getUserByDepartmentId(@PathVariable("id") String id,HttpServletRequest httpServletRequest){

List<User> usrs = this.userService.getUserByOrgId(id);
HttpHeaders headers = new HttpHeaders();
headers.add("Content-Type", "application/json; charset=utf-8");

if(!usrs.isEmpty()) {
      Gson gson = new Gson();
      String jsonUsr = gson.toJson(usrs);
      return new ResponseEntity<String>(jsonUsr, headers, HttpStatus.OK);
}
else {
     return new ResponseEntity<String>("{\"exists\":\"false\"}", headers, HttpStatus.OK);
}
}

Это возвращает

[["1","Joe"],["2","Reg"],["3","Dash"],["4","Space"],["5","Athi"],["6","Sysot"]]

Как мне изменить его, чтобы я получил результат в форме

{
"users": [{
        "id": "1",
        "name": "Joe"
    },
    {
        "id": "2",
        "name": "Reg"
    }
]
}

1 Ответ

0 голосов
/ 18 июня 2020

Не уверен, почему ваш объект User сериализован как массив.

Следующий код обеспечивает более красивый JSON для вашего случая:

List<User> users = Arrays.asList(new User("1", "John"), new User("2", "Gill"));

Gson gson = new GsonBuilder().setPrettyPrinting().create(); // enable pretty printing

Map<String, List<User>> wrap = new HashMap<>();
wrap.put("users", users);  // wrap user list in a map

String json = gson.toJson(wrap);
System.out.println(json);

Вывод:

{
  "users": [
    {
      "id": "1",
      "name": "John"
    },
    {
      "id": "2",
      "name": "Gill"
    }
  ]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...