Javascript JSResultSet到JSON

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(

我从XML输出中克隆了以下代码。我需要输出一个JSON对象而不是XML字符串,但是我缺少了一些东西

    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对象:
列={“column1”:123“}

  • 将每个列对象添加到行的数组中
行=[{“column1”:123},{“column2”:456}]

  • 将每行添加到数组中
行=[{“column1”:123“},{“column2”:456”},{“column1”:111“},{“column2”:222”}]

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;