[英]Convert returned JSON String to a JSONArray
我有一個執行數據庫查詢的Web服務,將結果集轉換為JSON字符串並將串行返回給客戶端。 這是轉換器的代碼(我從http://biercoff.com/nice-and-simple-converter-of-java-resultset-into-jsonarray-or-xml/獲得了它):
public static String convertToJSON(ResultSet resultSet)
throws Exception {
JSONArray jsonArray = new JSONArray();
while (resultSet.next()) {
int total_rows = resultSet.getMetaData().getColumnCount();
JSONObject obj = new JSONObject();
for (int i = 0; i < total_rows; i++) {
obj.put(resultSet.getMetaData().getColumnLabel(i + 1)
.toLowerCase(), resultSet.getObject(i + 1));
}
jsonArray.add(obj);
}
return jsonArray.toJSONString();
}
在客戶端應用程序中,當我打印返回的字符串時,它采用以下格式:
[{"Column1":0.333333,"Column2":"FirmA"},{"Column1":0.666667,"Column2":"FirmB"}]
到目前為止一切都很好。 我遇到的問題是將返回的字符串轉換為JSON數組。 我試過這個:
JSONArray arr = new JSONArray(JSON_STRING);
但得到以下錯誤消息:類JSONArray中的構造函數JSONArray不能應用於給定的類型。 我試着先轉換成JSON對象,如下所示:
JSONObject obj = new JSONObject(JSON_STRING);
但得到以下錯誤:不兼容的類型:字符串無法轉換為Map。 我究竟做錯了什么? 謝謝。
顯然問題出在我使用的json庫上。 一旦我使用了
import org.json.JSONArray;
一切都很順利。 我能夠使用返回的字符串轉換為數組
JSONArray arr = new JSONArray(JSON_STRING);
並迭代值我使用了本答案中提供的代碼: 使用Java訪問JSONArray中的項目成員,為簡單起見,我在此重現:
for (int i = 0; i < arr.length(); ++i) {
JSONObject rec = arr.getJSONObject(i);
int id = rec.getInt("id");
String loc = rec.getString("loc");
// ...
}
那么你需要通過這種方式來做到這一點
String jsonText = "[0,{\"1\":{\"2\":{\"3\":{\"4\":[5,{\"6\":7}]}}}}]";
try {
JSONArray array = new JSONArray(jsonText);
System.out.println(array);
System.out.println(array.length());
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
檢查使用的庫。 混亂是IDE通常建議將org.json.simple作為JSONObject和JSONArray的默認值。
你可以找到上面org.json庫的最新jar的鏈接。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.