我从MySQL服务器获取Resultset,并希望将其作为JSON发送回客户端。服务器是用Java EE编写的。
我一直在寻找这个问题的解决方法,但没有简单明了的方法。这个基本过程真的需要这么难吗?或者我的理解有什么错误吗?
我一直在寻找这个问题的解决方法,但没有简单明了的方法。这个基本过程真的需要这么难吗?或者我的理解有什么错误吗?
@JsonProperty
)。ObjectMapper mapper = new ObjectMapper();
mapper.writeValueAsString(somePojo);
public String convert(ResultSet rs) {
ObjectNode node = new ObjectMapper().createObjectNode();
node.put("fieldName", rs.getString("columnName"));
return node.toString(); // this is proper JSON
}
https://gist.github.com/mreynolds/603526
public String convertResultSetToJson(ResultSet resultSet) throws SQLException {
Joiner commaJoiner = Joiner.on(", \n");
StringBuilder builder = new StringBuilder();
builder.append("{ \"results\": [ ");
List<String> results = new ArrayList<String>();
while (resultSet.next()) {
List<String> resultBits = new ArrayList<String>();
ResultSetMetaData metaData = resultSet.getMetaData();
for (int i = 1; i <= metaData.getColumnCount(); i++) {
StringBuilder resultBit = new StringBuilder();
String columnName = metaData.getColumnName(i);
resultBit.append("\"").append(columnName).append("\": \"").append(resultSet.getString(i)).append("\"");
resultBits.add(resultBit.toString());
}
results.add(" { " + commaJoiner.join(resultBits) + " } ");
}
builder.append(commaJoiner.join(results));
builder.append("] }");
return builder.toString();
}
org.json
提供的JSONObject
。
将org.json.JSONObject
导入您的文件中。然后,您可以按以下方式转换结果集:jsonObject = new JSONObject();
jsonObject.put(key,resultSet.getInt(resultSet.findColumn(columname)));
return jsonObject.toString();
如果你想返回一个名为NO_OF_DAYS且值为3的列到一个JSON对象中,例如这个{"days" : "3"}
,你可以编写以下代码:
jsonObject.put("days",resultSet.getInt(resultSet.findColumn("NO_OF_DAYS")));
@SuppressWarnings("unchecked") //we use 3rd-party non-type-safe types...
public static String convertResultSetToJson(ResultSet resultSet) throws SQLException
{
JSONArray json = new JSONArray();
ResultSetMetaData metadata = resultSet.getMetaData();
int numColumns = metadata.getColumnCount();
while(resultSet.next()) //iterate rows
{
JSONObject obj = new JSONObject(); //extends HashMap
for (int i = 1; i <= numColumns; ++i) //iterate columns
{
String column_name = metadata.getColumnName(i);
obj.put(column_name, resultSet.getObject(column_name));
}
json.add(obj);
}
return json.toJSONString();
}
您可以轻松使用:JsonUtils.convertResultSetToJson(...)
从Maven中央库获取JAR包,
<!-- https://mvnrepository.com/artifact/com.ohadr/ohadr.commons -->
<dependency>
<groupId>com.ohadr</groupId>
<artifactId>ohadr.commons</artifactId>
<version>0.3</version>
</dependency>