2

関連するスレッドをすべて検索しましたが、成功しませんでした。関連する回答は大歓迎です。

.jsonフォルダ内のSDCardにファイルとしてJSONデータがあり、ファイル内.NewFolderのデータを読み取って解析し、タイムスタンプを見つけて、タイムスタンプが異なる場合は書き換えたいと考えています。

以下は私が使用するコードで、データaBufferと値を取得しjdata_fromfileますが、解析中に nullPointerException を取得します。

myFile = new File(Environment.getExternalStorageDirectory() + "/.NewFolder/" +str.get(i));
if(myFile.exists())
{
    FileInputStream fIn = new FileInputStream(myFile);
    BufferedReader myReader = new BufferedReader(new InputStreamReader(fIn));
    String aDataRow = "";
    String aBuffer = "";
    while ((aDataRow = myReader.readLine()) != null) 
    {
        aBuffer += aDataRow;
    }
    myReader.close();
    jdata_fromfile = new JSONObject(aBuffer);

    String timestamp_fromfile = jdata_fromfile.getString(str_timestamp.get(i));
    timestamp_val_fromfile.add(timestamp_fromfile);
}
else
{
    myFile.createNewFile();
    writedate_tofile(value_json.toString());
    timestamp_val_fromfile.add("xxx");
}

また、メモ帳でファイルを開くと、データの一部のみが表示され、http://jsonformatter.curiousconcept.comにコピーすると、すべてが 1 行に表示されます。

データ全体と有効な json を取得します。do - ctrl+end を押して enter を押すと、メモ帳に残りのデータが表示されます。

なぜこれが間違っているのですか?

これは私のエラーです - ログ

02-13 18:44:52.109: E/aBuffer value(7134):  is {"Status":{"Itemlist":[{"x - Drinks":{"Details":[{"type":"","image":"","price":"","name":"Minerals"},{"type":"","image":"","price":"","name":"Milk Shakes"},{"type":"","image":"","price":"","name":"Milk"},{"type":"","image":"","price":"","name":"Mineral Water"},{"type":"","image":"","price":"","name":"Hot Beverages"},{"type":"","image":"","price":"","name":"Chocolate Muffin and Ice Cream"}, ........................................................................{"type":"","image":"","price":"","name":"Blu
02-13 18:44:52.189: E/jdata_fromfile value(7134):  is {"x Time_stamp":"2013-02-12 12:30:00","Status":{"Itemlist":[{"x - Sides":{"Details":[{"type":"","image":"","name":"Onion Rings (6)","price":""},{"type":"","image":"","name":"Sausage Portion (Minimum 2 per portion)","price":""},.................................................................................................................... ,"x - Burgers":{"Details":[{"type":"","image":"","name":"x 5oz Burger","price":""},{"type":"","image":"","name":"x 5oz Cheese Burger","price":""},{"type":"","image":"","name":"x 5oz with Bacon and Cheese","price":""},{"type":"","imag
02-13 18:44:52.189: E/Reading from internal file - Exception e(7134): java.lang.NullPointerException

前もって感謝します 。

4

1 に答える 1

1

上記のコードの何が問題なのかわかりませんが、別の JSON ライブラリを使用したソリューションを次に示します。

Androidアプリケーションの1つで次のコードを使用していましたが、Androidファイルシステムからjsonファイルを読み取るのに完全に機能します。Android の JSON ライブラリを使用する代わりに、http://code.google.com/p/json-simple/json-simple.jarから使用しました

上記の jar を Android プロジェクトの libs フォルダーに配置します。また、.Manifestファイルに次のパーミッションを設定します。

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

次に、次のコードを別のスレッドに入れます。

JSONParser parser  = new JSONParser();
try { 
    String PATH = Environment.getExternalStorageDirectory() + "/Download/list.json";
    Object object = parser.parse(new FileReader(PATH));             
    JSONObject jsonObject = (JSONObject) object;
    //Use JSONArray instead of JSONObject if json file contains array of JSONs
    //
    // Do anything with jsonObject  
    //
} catch(Exception e) {
    // TODO: handle exception
}

ここで私のlist.jsonファイルは location にあります/mnt/sdcard/Download

参考までに、単純な Java プロジェクトで上記のライブラリを使用した例を次に示します

于 2013-03-11T17:17:15.727 に答える