我写的代码是:-
import com.google.gson.Gson;
import com.google.gson.JsonObject;
public class JsonFileCreation{
public static JsonArray convertToJSON(ResultSet resultSet)
throws Exception {
JsonArray jsonArray = new JsonArray();
while (resultSet.next()) {
int total_columns = resultSet.getMetaData().getColumnCount();
JsonObject obj = new JsonObject();
for (int i = 0; i < total_columns; i++) {
obj.put(resultSet.getMetaData().getColumnLabel(i + 1).toLowerCase(), resultSet.getObject(i + 1));
}
jsonArray.put(obj);
}
return jsonArray;
}
public static void main(String args[]) {
Gson gson = new Gson();
JsonArray jsonArr = new JsonArray();
....
}
在行中显示错误。它显示 put(字符串,对象(未为类型 Json 对象定义。
jsonArray.put(obj);
我的结果集查询是-
sql = "SELECT * FROM EMPLOYEE";
ResultSet rs = stmt.executeQuery(sql);
该表如下所示:
点击这里查看表格
我是初学者。请帮助我如何正确编写代码并在浏览器中获取 json 输出。
您得到的错误是:
put(字符串,对象(没有为类型
JsonObject
定义。
如果你看一下Gson Javadoc forJsonObject
,这个消息是正确的。JsonObject
类没有put
方法。
相反,有一些add
方法,您可能想要使用这些方法。
但是,没有add
方法可以接受任何类型的对象并将其放入 JSON 中。 您将不得不自己处理各种不同类型的价值。 您可能会得到null
值,字符串,数字,日期以及其他可能的信息。
我建议创建一个新方法,如下所示,以处理向 JSON 对象添加单个值obj
. 它将在它知道的几种不同类型中检查给定值,并使用相关的JsonObject
add
或addProperty
方法来添加值:
private static void addValueToJSON(JsonObject obj, String propertyName, Object value) throws Exception {
if (value == null) {
obj.add(propertyName, JsonNull.INSTANCE);
} else if (value instanceof Number) {
obj.addProperty(propertyName, (Number)value);
} else if (value instanceof String) {
obj.addProperty(propertyName, (String)value);
} else if (value instanceof java.sql.Date) {
// Not clear how you want dates to be represented in JSON.
// Perhaps use SimpleDateFormat to convert them to a string?
// I'll leave it up to you to finish this off.
} else {
// Some other type of value. You can of course add handling
// for extra types of values that you get, but it's worth
// keeping this line at the bottom to ensure that if you do
// get a value you are not expecting, you find out about it.
throw new Exception("Unrecognised type of value: " + value.getClass().getName());
}
}
完成此操作后,您将通过替换行来调用新方法
obj.put(resultSet.getMetaData().getColumnLabel(i + 1).toLowerCase(), resultSet.getObject(i + 1));
跟
addValueToJSON(obj, resultSet.getMetaData().getColumnLabel(i + 1).toLowerCase(), resultSet.getObject(i + 1));
最后,你写道你的错误发生在线上
jsonArray.put(obj);
我不相信这是正确的,因为在这一行上,您不会尝试在JsonObject
上调用方法。 但是,JsonArray
类也没有put
方法,因此此行也存在错误。 在这种情况下,错误更容易修复:与JsonObject
类一样,JsonArray
类也有add
方法,但您可以使用采用JsonElement
的方法,因为您要向数组添加JsonObject
并且JsonObject
扩展JsonElement
。 这次的修复只是替换的情况
jsonArray.put(obj);
跟
jsonArray.add(obj);