我正在创建一个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包
编辑:我正在使用邮递员来测试结果
答案 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();
}
}