如何在Android上将多维JSON数组保存到CSV文件?

如何在Android上将多维JSON数组保存到CSV文件?,android,json,csv,Android,Json,Csv,我想将大的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(JSONA

我想将大的
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();
    }
}
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)抛出IOException、jsoneexception{
字符串rootPath=Environment.getExternalStorageDirectory()
.getAbsolutePath()+“/test/”;
文件目录=新文件(根路径);
如果(!dir.exists()){
dir.mkdir();
}
文件;
EditText EditText=(EditText)findViewById(R.id.editText1);
如果(!editText.getText().toString()等于(“”){
file=新文件(rootPath,editText.getText().toString()+“.csv”);
}否则{
setError(“将使用Defualt csv文件名”);
Toast.makeText(此“CSV名称为空”,5000).show();
file=新文件(rootPath,“test1.csv”);
}
createNewFile();
if(file.exists()){
CSVWriter writer=new-CSVWriter(新文件编写器(文件),,);
String[][]arrayOfArrays=新字符串[outerArray.length()][];
对于(int i=0;i
我在这里使用了opencsv-2.3.jar。记录在这里

我有以下带有布尔值的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)抛出IOException、jsoneexception{
字符串rootPath=Environment.getExternalStorageDirectory()
.getAbsolutePath()+“/test/”;
文件目录=新文件(根路径);
如果(!dir.exists()){
dir.mkdir();
}
文件;
EditText EditText=(EditText)findViewById(R.id.editText1);
如果(!editText.getText().toString()等于(“”){
file=新文件(rootPath,editText.getText().toString()+“.csv”);
}否则{
setError(“将使用Defualt csv文件名”);
Toast.makeText(此“CSV名称为空”,5000).show();
file=新文件(rootPath,“test1.csv”);
}
如果(!file.exists()){
createNewFile();
}       
if(file.exists()){
CSVWriter writer=new-CSVWriter(新文件编写器(文件),,);
String[][]arrayOfArrays=新字符串[outerArray.length()][];
对于(int i=0;i
请参见此链接@swapnil
    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();
    }
}