从postgres中检索json查询并在java中显示

时间:2016-11-17 15:48:08

标签: java json database postgresql

String selectTableSQL = "SELECT USER_ID, USERNAME from DBUSER";
Statement statement = dbConnection.createStatement();
ResultSet rs = statement.executeQuery(selectTableSQL);
while (rs.next()) {
String userid = rs.getString("USER_ID");
String username = rs.getString("USERNAME");
}

使用上面的代码..我能够与postgres建立连接并显示数据库表中的值。 但是如何解析JSON Select查询 -

select array_to_json(array_agg(row_to_json(t)))
from (
  select USER_ID, USERNAME from DBUSER
) t 

postgres中上述Select查询的结果json结构是 -

[{user_id:"123",username:"abc"},{user_id:"234",username:"pqr"}]

不了解如何阅读上述json"选择"从postgres查询并显示值" USER_ID"和" USERNAME"分别在java。

我只是一个初学者。任何帮助都会受到赞赏。提前谢谢。

2 个答案:

答案 0 :(得分:1)

你应该像这样使用Jackson - ObjectMapper

ObjectMapper mapper = new ObjectMapper();
List<User> userList = mapper.readValue(jsonString, typeFactory.constructCollectionType(List.class, User.class));

for(User val : userList){
    System.out.println("User id : "+val.getUserId);
    System.out.println("User id : "+val.getUserName);
}

它也可以正常使用

List<User> userList= Arrays.asList(mapper.readValue(json, User[].class));

答案 1 :(得分:0)

让我假设您的模型如下所示

public class User {
 public int userId;
 public String userName; 
}

使用Gson将您的JSON字符串(查询的返回)转换为模型列表(在您的情况下为用户)。

Gson gson = new Gson();
Type type = new TypeToken<List<User >>(){}.getType();
List<User> userList = gson.fromJson(jsonString, type); // where jsonString = "[{user_id:"123",username:"abc"},{user_id:"234",username:"pqr"}]" (the return of your query)
for (User user: userList ){
        System.out.println("user " + user);
}