用java从mysql的数据中创建json对象
从mysql获取数据后,需要将数据导出为JSON,格式如下:用java从mysql的数据中创建json对象,java,json,arraylist,jsonobject,Java,Json,Arraylist,Jsonobject,从mysql获取数据后,需要将数据导出为JSON,格式如下: {"Thong tin":[{"Ngay":"2013-06-18","Tinh":"An Giang"},{"Ngay":"2013-06-17","Tinh":"Bình Dương"},{"Ngay":"2013-06-16","Tinh":"Bạc Liêu"}]} 但我得到的是 {"Thong tin":[{"Ngay":"2013-06-16","Tinh":"Bạc Liêu"},{"Ngay":"2013-06-16
{"Thong tin":[{"Ngay":"2013-06-18","Tinh":"An Giang"},{"Ngay":"2013-06-17","Tinh":"Bình Dương"},{"Ngay":"2013-06-16","Tinh":"Bạc Liêu"}]}
但我得到的是
{"Thong tin":[{"Ngay":"2013-06-16","Tinh":"Bạc Liêu"},{"Ngay":"2013-06-16","Tinh":"Bạc Liêu"},{"Ngay":"2013-06-16","Tinh":"Bạc Liêu"}]}
你能帮我纠正这个错误吗
我的代码:
acc = new access();
rs2 = acc.query("select province_Name, date_Expired from thong_tin_khach_hang");
List<String> province_Name = new ArrayList<String>();
List<String> date_Expired = new ArrayList<String>();
try {
while (rs2.next()) {
province_Name.add(rs2.getString(1));
date_Expired.add(rs2.getString(2));
}
} catch (SQLException e) {
try {
acc.con.close();
} catch (SQLException e1) {
e1.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
}
JSONObject obj = new JSONObject();
JSONArray jarray = new JSONArray();
try {
JSONObject ob = new JSONObject();
for (int i = 0; i < province_Name.size(); i++) {
ob=new JSONObject();
ob.put("Tinh", province_Name.get(i));
ob.put("Ngay", date_Expired.get(i));
jarray.add(ob);
}
obj.put("Thong tin", jarray);
} catch (JSONException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
out.print(obj);
以下是可以帮助您解决问题的代码:
public String getJSONFromResultSet(ResultSet rs,String keyName) {
Map json = new HashMap();
List list = new ArrayList();
if(rs!=null)
{
try {
ResultSetMetaData metaData = rs.getMetaData();
while(rs.next())
{
Map<String,Object> columnMap = new HashMap<String, Object>();
for(int columnIndex=1;columnIndex<=metaData.getColumnCount();columnIndex++)
{
if(rs.getString(metaData.getColumnName(columnIndex))!=null)
columnMap.put(metaData.getColumnLabel(columnIndex), rs.getString(metaData.getColumnName(columnIndex)));
else
columnMap.put(metaData.getColumnLabel(columnIndex), "");
}
list.add(columnMap);
}
} catch (SQLException e) {
e.printStackTrace();
}
json.put(keyName, list);
}
return JSONValue.toJSONString(json);
}
将resultset和您的keyname传递到参数中,并获取响应中的Json字符串。以下代码可以帮助您:
public String getJSONFromResultSet(ResultSet rs,String keyName) {
Map json = new HashMap();
List list = new ArrayList();
if(rs!=null)
{
try {
ResultSetMetaData metaData = rs.getMetaData();
while(rs.next())
{
Map<String,Object> columnMap = new HashMap<String, Object>();
for(int columnIndex=1;columnIndex<=metaData.getColumnCount();columnIndex++)
{
if(rs.getString(metaData.getColumnName(columnIndex))!=null)
columnMap.put(metaData.getColumnLabel(columnIndex), rs.getString(metaData.getColumnName(columnIndex)));
else
columnMap.put(metaData.getColumnLabel(columnIndex), "");
}
list.add(columnMap);
}
} catch (SQLException e) {
e.printStackTrace();
}
json.put(keyName, list);
}
return JSONValue.toJSONString(json);
}
将resultset和您的keyname传递到参数中,并获取Json字符串作为响应。为什么不试试呢。它非常简单,易于使用。查看一些示例为什么不试试呢。它非常简单,易于使用。查看一些示例这段代码非常有用!谢谢 只是一个小小的改进,下面的代码还支持int值,并且不将它们转换为字符串
public String getJSONFromResultSet(ResultSet rs,String keyName) {
Map json = new HashMap();
List list = new ArrayList();
if(rs!=null)
{
try {
ResultSetMetaData metaData = rs.getMetaData();
while(rs.next())
{
Map<String,Object> columnMap = new HashMap<String, Object>();
for(int columnIndex=1;columnIndex<=metaData.getColumnCount();columnIndex++)
String val= response.getString(metaData.getColumnName(columnIndex));
String key = metaData.getColumnLabel(columnIndex);
if(val== null)
columnMap.put(key, "");
else if (val.chars().allMatch(Character::isDigit))
columnMap.put(key, Integer.parseInt(val));
else
columnMap.put(key, val);
}
list.add(columnMap);
}
} catch (SQLException e) {
e.printStackTrace();
}
json.put(keyName, list);
}
return JSONValue.toJSONString(json);
}
这段代码非常有效!谢谢 只是一个小小的改进,下面的代码还支持int值,并且不将它们转换为字符串
public String getJSONFromResultSet(ResultSet rs,String keyName) {
Map json = new HashMap();
List list = new ArrayList();
if(rs!=null)
{
try {
ResultSetMetaData metaData = rs.getMetaData();
while(rs.next())
{
Map<String,Object> columnMap = new HashMap<String, Object>();
for(int columnIndex=1;columnIndex<=metaData.getColumnCount();columnIndex++)
String val= response.getString(metaData.getColumnName(columnIndex));
String key = metaData.getColumnLabel(columnIndex);
if(val== null)
columnMap.put(key, "");
else if (val.chars().allMatch(Character::isDigit))
columnMap.put(key, Integer.parseInt(val));
else
columnMap.put(key, val);
}
list.add(columnMap);
}
} catch (SQLException e) {
e.printStackTrace();
}
json.put(keyName, list);
}
return JSONValue.toJSONString(json);
}
您是否检查了数据库,它是否包含正确的值?数据库中的数据如我所示。但当导出时,它会显示这样的重复项…尝试使用集合而不是列表,它将消除重复项..您检查过数据库了吗,它是否包含正确的值?数据库中的数据如我所示。但当导出时,它会显示这样的重复项…尝试使用集合而不是列表,它将消除重复项。。