Javascript JSResultSet到JSON
我从XML输出中克隆了以下代码。我需要输出一个JSON对象而不是XML字符串,但是我缺少了一些东西Javascript JSResultSet到JSON,javascript,json,Javascript,Json,我从XML输出中克隆了以下代码。我需要输出一个JSON对象而不是XML字符串,但是我缺少了一些东西 public String evaluate() throws Exception { String itemTitle = ""; BoundStringBuilder data = new BoundStringBuilder(); TreeMap promptValues = ReportItem.promptValuesSetStringToTreeMap(
public String evaluate() throws Exception
{
String itemTitle = "";
BoundStringBuilder data = new BoundStringBuilder();
TreeMap promptValues = ReportItem.promptValuesSetStringToTreeMap(promptValuesSet);
String debugFlag = isDebugMode ? "Y" : "N";
// get JSON item config settings
ExecuteProcedure ep = new ExecuteProcedure(con, "pkg_report.select_mr_JSON_config");
ep.setParam("p_report_number", reportNumber);
ep.setParam("p_instance_number", instanceNumber);
ep.setParam("p_item_index", itemIndex);
ep.setParam("p_path", null);
ResultSet JSONConfigRs = ep.execute()[0];
while(JSONConfigRs.next())
{
String setting = JSONConfigRs.getString("field_name");
String value = UtilityMethods.nullValue(JSONConfigRs.getString("value"), "").toLowerCase();
if(setting.equals("JSON_JSONREPORTITEM_ITEMNAME_BAN_ITEM_NAME"))
itemTitle = value;
}
JSONConfigRs.close();
ep.close();
// execute sql
ep = new ExecuteProcedure(con, "pkg_report.execute_mr_sql");
ep.setParam("p_report_number", reportNumber);
ep.setParam("p_instance_number", instanceNumber);
ep.setParam("p_item_index", itemIndex);
ep.setParam("p_item_type_code", itemTypeCode);
ep.setParam("p_sub_item_index", "1");
ep.setParam("p_sub_sub_item_index", "1");
ep.setParam("p_prompt_values", UtilityMethods.treeMapToList(promptValues));
ep.setParam("p_debug_flag", debugFlag);
ResultSet rs = ep.execute()[0];
ResultSetMetaData rsmd = rs.getMetaData();
String[] columnNames = new String[rsmd.getColumnCount()];
for(int i = 0; i < columnNames.length; i++)
columnNames[i] = rsmd.getColumnName(i + 1).toLowerCase();
data.append("<data name=\"").append(itemTitle).append("\">\n");
while(rs.next())
{
data.append("\t<row>\n");
for(int i = 0; i < columnNames.length; i++)
{
data.append("\t\t<cell name=\"").append(columnNames[i]).append("\">");
data.append(UtilityMethods.xmlFormat(UtilityMethods.screenFormat(rs.getString(i + 1)).trim()));
data.append("</cell>\n");
}
data.append("\t</row>\n");
}
rs.close();
ep.close();
data.append("</data>\n");
String JSONData = data.toString();
return JSONData;
}
public String evaluate()引发异常
{
字符串itemTitle=“”;
BoundStringBuilder数据=新的BoundStringBuilder();
TreeMap promptValues=ReportItem.promptValuesSetStringToTreeMap(promptValuesSet);
字符串debugFlag=isDebugMode?“Y”:“N”;
//获取JSON项目配置设置
ExecuteProcedure ep=新的ExecuteProcedure(con,“pkg_report.select_mr_JSON_config”);
ep.setParam(“p_报告编号”,报告编号);
ep.setParam(“p_实例编号”,实例编号);
ep.setParam(“项目索引”,项目索引);
ep.setParam(“p_路径”,null);
ResultSet JSONConfigRs=ep.execute()[0];
while(JSONConfigRs.next())
{
字符串设置=JSONConfigRs.getString(“字段名称”);
String value=UtilityMethods.nullValue(JSONConfigRs.getString(“value”),“”)。toLowerCase();
if(setting.equals(“JSON\u JSONREPORTITEM\u ITEMNAME\u BAN\u ITEM\u NAME”))
itemTitle=值;
}
JSONConfigRs.close();
ep.close();
//执行sql
ep=新的执行过程(con,“pkg_report.execute_mr_sql”);
ep.setParam(“p_报告编号”,报告编号);
ep.setParam(“p_实例编号”,实例编号);
ep.setParam(“项目索引”,项目索引);
ep.setParam(“项目类型代码”,项目类型代码);
ep.setParam(“p_子项_索引”,“1”);
ep.setParam(“p_子项”索引,“1”);
ep.setParam(“p_提示符_值”,UtilityMethods.treeMapToList(promptValues));
ep.setParam(“p_debug_标志”,debugFlag);
ResultSet rs=ep.execute()[0];
ResultSetMetaData rsmd=rs.getMetaData();
String[]columnNames=新字符串[rsmd.getColumnCount()];
for(int i=0;i
有人建议我“与其构建XML字符串,不如使用GSON JSON实用工具方法将结果集转储到JSON对象。”
有人能给我指一下正确的方向吗。我不熟悉JSON对象,如果这还不够明显的话;) json.org有一个简单的API,您可以使用: 你可以这样做:
- 遍历您的行
- 对于每个列,创建一个具有名称/值对的JSON对象:
- 将每个列对象添加到行的数组中
- 将每行添加到数组中
import org.json.JSONArray;
导入org.json.JSONException;
导入org.json.JSONObject;
JSONArray行=新的JSONArray();
while(rs.next())
{
JSONArray columns=新的JSONArray();
for(int i=0;i
以下是对我有效的修复:
我删除了所有xml和表构建(行/列/数据)信息,只是将结果集转储到GSON JSON数组中,并输出JSON。代码如下:
JsonArray reportArray = JsonUtilities.resultSetToJsonObjectArray(ep.execute()[0]); //Dump Result Set to JsonArray
ResultSetMetaData rsmd = rs.getMetaData();
String[] columnNames = new String[rsmd.getColumnCount()];
for(int i = 0; i < columnNames.length; i++)
columnNames[i] = rsmd.getColumnName(i + 1).toLowerCase();
rs.close();
ep.close();
Gson gson = new GsonBuilder().setPrettyPrinting().create(); //Create JSON object and format output for readability
String JSONData = gson.toJson(reportArray);
return JSONData;
JsonArray reportArray=JsonUtilities.resultsetotojsonobjectarray(ep.execute()[0]);//将结果集转储到JsonArray
ResultSetMetaData rsmd=rs.getMetaData();
String[]columnNames=新字符串[rsmd.getColumnCount()];
for(int i=0;i
修复!我找到了。谢谢你给我指出了基尔尼的正确方向!
JsonArray reportArray = JsonUtilities.resultSetToJsonObjectArray(ep.execute()[0]); //Dump Result Set to JsonArray
ResultSetMetaData rsmd = rs.getMetaData();
String[] columnNames = new String[rsmd.getColumnCount()];
for(int i = 0; i < columnNames.length; i++)
columnNames[i] = rsmd.getColumnName(i + 1).toLowerCase();
rs.close();
ep.close();
Gson gson = new GsonBuilder().setPrettyPrinting().create(); //Create JSON object and format output for readability
String JSONData = gson.toJson(reportArray);
return JSONData;