Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java查询SQL到JSON只返回一行_Java_Sql_Json - Fatal编程技术网

Java查询SQL到JSON只返回一行

Java查询SQL到JSON只返回一行,java,sql,json,Java,Sql,Json,我正在创建一个Web服务来查询数据库,并将数据返回到JSON格式,以便进行Ajax调用 在我尝试从SQL数据库返回多行之前,一切都很好,然后我的结果是 {"tag":"Ingredients","Items":"flour ","Quantity":"6 "} 注意items和quantity标记后面的空格,因此我将查询结果打印到控制台,并意识到它返回了一个多行结果 我试图消除断线的情况下,这是一个问题,但它似乎没有工作 下面是我的JSON converter Util

我正在创建一个Web服务来查询数据库,并将数据返回到JSON格式,以便进行Ajax调用

在我尝试从SQL数据库返回多行之前,一切都很好,然后我的结果是

{"tag":"Ingredients","Items":"flour     ","Quantity":"6         "}
注意items和quantity标记后面的空格,因此我将查询结果打印到控制台,并意识到它返回了一个多行结果

我试图消除断线的情况下,这是一个问题,但它似乎没有工作

下面是我的JSON converter Utility.java

public static String constructSQLJSON(String tag, String string, String string2) {
        JSONObject obj = new JSONObject();
        String sqlout = null;
        try {
            obj.put("tag", tag);
            obj.put("Items", new String(string));
            obj.put("Quantity", new String(string2));
        } catch (JSONException e) {
            // TODO Auto-generated catch block
        }
        return obj.toString();
    }
还有我的DB_probe.java

    while (rs.next()) {
        String items = rs.getString(1);
         items = items.replaceAll("\n ", " ").replaceAll("\n", " ");
        String Quantity = rs.getString(2);
         ingred = Utitlity.constructSQLJSON("Ingredients", items, Quantity);
        System.out.println( rs.getString(1) + rs.getString(2));

    }
我正在使用codehaus.jettison.json包


编辑:我正在用邮递员测试结果,如果你怀疑是这样的话。你可以修剪绳子。尝试如下

obj.put("Items", new String(string.trim()));
obj.put("Quantity", new String(string2.trim()));

也许您正在寻找一个示例:

import javax.json.Json;
import javax.json.JsonArrayBuilder;
import javax.json.JsonValue;
import java.sql.ResultSet;
import java.sql.SQLException;

public class Class {
  public JsonValue constructSQLJSON(String tag,
                                           String string,
                                           String string2) {
    return Json.createObjectBuilder()
      .add("tag", tag)
      .add("Items", string.trim())
      .add("Quantity", string2.trim())
      .build();
  }

  public String someMethod() throws SQLException {
    final ResultSet rs = null;//..get result set...
    final JsonArrayBuilder results = Json.createArrayBuilder();
    while (rs.next()) {
      results.add(constructSQLJSON(
        "Ingredients",
        rs.getString(1),
        rs.getString(2)));
    }
    return results.build().toString();
  }
}

这删除了末尾的额外空间,但没有返回额外的行suse JSONARRAY。逐个添加对象,最后返回itJSONArray objarr=new JSONArray();objarr.put(obj);您在JSON中从何处获得响应?有很多因素可以使您的代码发生这种情况,请发布足够的代码,以便我们可以查看它