私はこのタイプのJSONを持っています:
{
"stampi":
[
{
"nome": "Ovale Piccolo 18.2x13.5cm",
"lunghezza": 18.2,
"larghezza": 13.5,
"altezza": 4,
"volume": 786.83
},
{
"nome": "Ovale Grande 22.5x17.4cm",
"lunghezza": 22.5,
"larghezza": 17.4,
"altezza": 4,
"volume": 1246.54
}
]
}
そして通常、私はこのコードで読みます:
StringBuffer sb = new StringBuffer();
BufferedReader br = null;
try {
br = new BufferedReader(new InputStreamReader(getAssets().open("stampi.json")));
String temp;
while ((temp = br.readLine()) != null)
sb.append(temp);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
br.close(); // stop reading
} catch (IOException e) {
e.printStackTrace();
}
}
myjson_stampi = sb.toString();
プログラム内で配列を使用した後。JSONファイル内に新しい値を追加するメニューを作成しましたが、問題があります...これはコードです:
StringBuffer sb = new StringBuffer(); BufferedReader br = null; try { br = new BufferedReader(new InputStreamReader(getAssets().open("stampi.json"))); String temp; while ((temp = br.readLine()) != null) sb.append(temp); } catch (IOException e) { e.printStackTrace(); } finally { try { br.close(); // stop reading } catch (IOException e) { e.printStackTrace(); } } myjson_stampi = sb.toString(); try { // Creating JSONObject from String JSONObject jsonObjMain = new JSONObject(myjson_stampi); // Creating JSONArray from JSONObject JSONArray objNames = jsonObjMain.names(); System.out.println(objNames.toString()); jsonArray_stampi = jsonObjMain.getJSONArray("stampi"); int num_elem = jsonArray_stampi.length(); jsonObjMain.put( "nome","prova"); jsonObjMain.put( "lunghezza",22); jsonObjMain.put( "larghezza", 10); jsonObjMain.put( "altezza", 4); jsonObjMain.put( "volume", 10.5); jsonArray_stampi.put( jsonObjMain ); try { FileWriter file = new FileWriter("c:\\test.json"); //file.write(jsonArray_stampi.); file.write( JSON.stringify(jsonArray_stampi) ); file.flush(); file.close(); } catch (IOException e) { e.printStackTrace(); } } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } } });
なぜ正しく動作しないのですか?num_elem 変数は常に 2 です..助けてください!
thxアンドレア