Java Query SQL to JSON只返回一行

时间:2017-02-22 20:54:28

标签: java sql json

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

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

{"tag":"Ingredients","Items":"flour     ","Quantity":"6         "}

请注意项目和数量标签之后的空格,因此我将查询结果打印到我的控制台,并意识到它返回了多行结果。

我试图在问题出现时删除换行符,但似乎没有用。

这是我的JSON转换器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包

编辑:我正在使用邮递员来测试结果

2 个答案:

答案 0 :(得分:0)

如果你怀疑那样。你可以修剪字符串。尝试如下

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

答案 1 :(得分:0)

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

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();
  }
}