我试图从文件中存储的JSONObject
中读取数据" cantidad_items_lista.txt
":
{
"numero_items": [
{
"numero_items_lista_alq_bic": "13",
"numero_items_lista_alq_aut": "11",
"numero_items_lista_ap_hot": "17",
"numero_items_lista_cab_com": "21",
"numero_items_lista_camp": "11",
"numero_items_lista_hot": "6",
"numero_items_lista_host": "14",
"numero_items_lista_ag_tur": "20",
"numero_items_lista_bod": "8",
"numero_items_lista_dep_ext": "16",
"numero_items_lista_rest": "17",
"numero_items_lista_vin": "12"
}
]
}
但是却抛出了这个错误:
org.json.JSONException: Expected listeral value at character 0 of /SplashDownload/cantidad_items_lista.txt
这就是我想要做的事情:
// Uso del archivo JSON
JSONObject jObj = new JSONObject(Environment.getExternalStorageDirectory() + "/SplashDownload" + "/cantidad_items_lista.txt");
JSONObject subObj = jObj.getJSONObject("numero_items");
int numero_items_lista_alq_bic = subObj.getInt("numero_items_lista_alq_bic");
int numero_items_lista_alq_aut = subObj.getInt("numero_items_lista_alq_aut");
int numero_items_lista_ap_hot = subObj.getInt("numero_items_lista_ap_hot");
int numero_items_lista_cab_com = subObj.getInt("numero_items_lista_cab_com");
Log.i("", "AAA numero_items_lista_alq_bic: " + numero_items_lista_alq_bic);
Log.i("", "AAA numero_items_lista_alq_aut: " + numero_items_lista_alq_aut);
Log.i("", "AAA numero_items_lista_ap_hot: " + numero_items_lista_ap_hot);
Log.i("", "AAA numero_items_lista_cab_com: " + numero_items_lista_cab_com);
错误出现在这段代码的第一行。
答案 0 :(得分:1)
试试这个:
JSONObject jObj = new JSONObject(getStringFromFile(Environment.getExternalStorageDirectory() + "/SplashDownload" + "/cantidad_items_lista.txt"));
以下是功能:
public static String convertStreamToString(InputStream is) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line).append("\n");
}
reader.close();
return sb.toString();
}
public static String getStringFromFile(String filePath) throws Exception {
File fl = new File(filePath);
FileInputStream fin = new FileInputStream(fl);
String ret = convertStreamToString(fin);
//Make sure you close all streams.
fin.close();
return ret;
}