3

JSON大きな配列データを CSV ファイルに保存したいと考えています。これどうやってするの?

Androidの「test」フォルダーに作成された「test1.csv」ファイルにデータを保存しない次のコードがあります。

これがコードです。

JSONArray outerArray = [{"value":true,"Id":0,"name":"214"},    {"value":true,"Id":0,"name":"215"},{"value":true,"Id":0,"name":"216"}]

public void saveCsv(JSONArray outerArray) throws IOException, JSONException {
    String rootPath = Environment.getExternalStorageDirectory()
            .getAbsolutePath() + "/test/";
    File dir = new File(rootPath);
    if (!dir.exists()) {
        dir.mkdir();
    }
    File file;
    EditText editText = (EditText) findViewById(R.id.editText1);
    if (!editText.getText().toString().equals("")) {
        file = new File(rootPath, editText.getText().toString() + ".csv");
    } else {
        editText.setError("Defualt csv file name will be used");
        Toast.makeText(this, "CSV name is empty", 5000).show();
        file = new File(rootPath, "test1.csv");
    }
    file.createNewFile();
    if (file.exists()) {
        CSVWriter writer = new CSVWriter(new FileWriter(file), ',');
        String[][] arrayOfArrays = new String[outerArray.length()][];
        for (int i = 0; i < outerArray.length(); i++) {
            JSONObject innerJsonArray =  (JSONObject) outerArray.get(i);
            String[] stringArray1 = new String[innerJsonArray.length()];
            for (int j = 0; j < innerJsonArray.length(); j++) {
                stringArray1[j] = (String) innerJsonArray.get("value");
            }
            arrayOfArrays[i] = stringArray1;
            writer.writeNext(arrayOfArrays[i]);
        }
        writer.close();
    }
}
4

1 に答える 1

5

ここからopencsv-2.3.jarを使用しましたhttp://sourceforge.net/projects/opencsv/。ここに文書化http://sourceforge.net/projects/opencsv/

文字列値にキャストされたブール値をスローするブール値を持つJSONをフォローしています

JSONArray outerArray = [{"value":true,"Id":0,"name":"214"},    {"value":true,"Id":0,"name":"215"},{"value":true,"Id":0,"name":"216"}]

json.get()をjson.getString()に変更しました。次のコードは現在正常に動作しています:)

    public void saveCsv(JSONArray outerArray) throws IOException, JSONException {
    String rootPath = Environment.getExternalStorageDirectory()
            .getAbsolutePath() + "/test/";
    File dir = new File(rootPath);
    if (!dir.exists()) {
        dir.mkdir();
    }
    File file;
    EditText editText = (EditText) findViewById(R.id.editText1);
    if (!editText.getText().toString().equals("")) {
        file = new File(rootPath, editText.getText().toString() + ".csv");
    } else {
        editText.setError("Defualt csv file name will be used");
        Toast.makeText(this, "CSV name is empty", 5000).show();
        file = new File(rootPath, "test1.csv");
    }
    if(!file.exists()){
        file.createNewFile();
    }       
    if (file.exists()) {
        CSVWriter writer = new CSVWriter(new FileWriter(file), ',');
        String[][] arrayOfArrays = new String[outerArray.length()][];
        for (int i = 0; i < outerArray.length(); i++) {
            JSONObject innerJsonArray =  (JSONObject) outerArray.get(i);
            String[] stringArray1 = new String[innerJsonArray.length()];

            stringArray1[0]= (String) innerJsonArray.getString("Id");
            stringArray1[1]= (String) innerJsonArray.getString("value");
            stringArray1[2]= (String) innerJsonArray.getString("name");
            arrayOfArrays[i] = stringArray1;
            writer.writeNext(arrayOfArrays[i]);
        }
        writer.close();
    }
}
于 2013-03-11T07:52:05.007 に答える