2017-02-22 8 views
0

Я создаю веб-сервис для запроса базы данных и возвращения данных в формат JSON для вызова Ajax.Java Query SQL to JSON возвращает только одну строку

Все хорошо, пока я пытаюсь вернуть более одной строки из моей базы данных 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

Edit: Я использую почтальон для проверки результатов

+0

Где вы получите ответ от вашей JSON? Есть много факторов, которые могут привести к тому, что это произойдет с вашим кодом, и, пожалуйста, разместите достаточно кода, чтобы мы могли посмотреть на него. – Coder

ответ

0

Если вы подозреваете, что так. вы можете обрезать String. попробуйте следующие

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

Это удалило дополнительное пространство в конце, но не вернуло дополнительные строки. –

+0

использовать JSONARRAY. добавьте свои объекты по одному, наконец, вы вернете его –

+0

JSONArray objarr = new JSONArray(); objarr.put (obj); –

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(); 
    } 
} 
Смежные вопросы