JSONException,无法读取JSON文件

时间:2015-06-08 19:17:45

标签: android json

我试图从文件中存储的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);

错误出现在这段代码的第一行。

1 个答案:

答案 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;
}