Java 在android应用程序中将Json转换为Csv格式

Java 在android应用程序中将Json转换为Csv格式,java,android,csv,Java,Android,Csv,Iam在android应用程序中将Json文件转换为Csv格式,并将其下载到手机存储器中。Iam只需单击一个按钮即可完成所有操作。目前,它正在手机存储器中创建.Csv文件,但该文件为空。我已调试该应用程序,它从Json for循环中获取字符串,但不知道为什么不将其写入Csv文件中。Csv文件在电话存储器中创建的始终为空。 此外,我想给每一行标题,我如何才能做到这一点 以下是我编写csv的函数: public void saveCsv(JSONArray outerArray) throws IO

Iam在android应用程序中将Json文件转换为Csv格式,并将其下载到手机存储器中。Iam只需单击一个按钮即可完成所有操作。目前,它正在手机存储器中创建.Csv文件,但该文件为空。我已调试该应用程序,它从Json for循环中获取字符串,但不知道为什么不将其写入Csv文件中。Csv文件在电话存储器中创建的始终为空。 此外,我想给每一行标题,我如何才能做到这一点

以下是我编写csv的函数:

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 = null;
        file = new File(rootPath, "test4.csv");
        if(!file.exists()){
            file.createNewFile();
        }
        if (file.exists()) {
            CSVWriter writer = new CSVWriter(new FileWriter(file), ',');
            for (int i = 0; i < outerArray.length(); i++) {
                JSONArray innerJsonArray =  (JSONArray) outerArray.getJSONArray(i);
                for(int k=0; k<innerJsonArray.length(); k++)
                {
                    String[][] arrayOfArrays = new String[innerJsonArray.length()][];
                    JSONObject innerJsonObject=  (JSONObject) innerJsonArray.getJSONObject(k);
                    String[] stringArray1 = new String[innerJsonObject.length()];

                    stringArray1[0]= (String) innerJsonObject.getString("type");
                    stringArray1[1]= (String) innerJsonObject.getString("title");
                    stringArray1[2]="";
                    JSONArray jsonArray= (JSONArray) innerJsonObject.getJSONArray("answer");
                    for (int j=0; j<jsonArray.length(); j++)
                    {
                        stringArray1[2]+=jsonArray.get(j).toString();
                        stringArray1[2]+=",";
                    }

                    arrayOfArrays[k] = stringArray1;
                    writer.writeNext(arrayOfArrays[k]);
                }
            }
            writer.close();
        }
    }
public void saveCsv(JSONArray outerArray)抛出IOException、jsoneexception{
字符串rootPath=Environment.getExternalStorageDirectory().getAbsolutePath()+“/test/”;
文件目录=新文件(根路径);
如果(!dir.exists()){
dir.mkdir();
}
File=null;
file=新文件(rootPath,“test4.csv”);
如果(!file.exists()){
createNewFile();
}
if(file.exists()){
CSVWriter writer=new-CSVWriter(新文件编写器(文件),,);
对于(int i=0;i
 JSONObject innerJsonArray =  (JSONObject) outerArray.getJSONObject(i);
更新此函数

    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 = null;
        file = new File(rootPath, "test4.csv");
        if (!file.exists()) {
            file.createNewFile();
        }
        int a = 0;
        if (file.exists()) {
            CSVWriter writer = new CSVWriter(new FileWriter(file), ',');
            for (int i = 0; i < outerArray.length()-1; i++) {
                JSONObject innerJsonArray = (JSONObject) outerArray.getJSONObject(i);

                String[] arrayOfArrays = new String[innerJsonArray.length()];
                String[] stringArray1 = new String[innerJsonArray.length()];

                stringArray1[0] =  innerJsonArray.getString("type");
                stringArray1[1] =  innerJsonArray.getString("title");
                stringArray1[2] = "";
                JSONArray jsonArray = (JSONArray) innerJsonArray.getJSONArray("answer");
                for (int j = 0; j < jsonArray.length(); j++) {
                    stringArray1[2] += jsonArray.get(j).toString();
                    stringArray1[2] += ",";
                }

                arrayOfArrays = stringArray1;
                a++;
                writer.writeNext(arrayOfArrays);

            }
            writer.close();
        }
    }
public void saveCsv(JSONArray outerArray)抛出IOException、jsoneexception{
字符串rootPath=Environment.getExternalStorageDirectory().getAbsolutePath()+“/test/”;
文件目录=新文件(根路径);
如果(!dir.exists()){
dir.mkdir();
}
File=null;
file=新文件(rootPath,“test4.csv”);
如果(!file.exists()){
createNewFile();
}
int a=0;
if(file.exists()){
CSVWriter writer=new-CSVWriter(新文件编写器(文件),,);
对于(int i=0;i
这将是工作


将您的JSONArray发布到此处,我在运行时从firebase数据库创建json任何虚拟格式[[{“答案”:[“2”],“类型”:1,“标题”:“问题2半径”},{“答案”:[“0”、“1”、“3”],“类型”:3,“标题”:“问题3 chk”},{“答案”:“简单文本”,“类型”:2,“标题”:“问题1文本”},{“答案”:[“文章写作”],“类型”:4,“问题4段落”}]这对我有用,你没有存储权限可能是
    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 = null;
        file = new File(rootPath, "test4.csv");
        if (!file.exists()) {
            file.createNewFile();
        }
        int a = 0;
        if (file.exists()) {
            CSVWriter writer = new CSVWriter(new FileWriter(file), ',');
            for (int i = 0; i < outerArray.length()-1; i++) {
                JSONObject innerJsonArray = (JSONObject) outerArray.getJSONObject(i);

                String[] arrayOfArrays = new String[innerJsonArray.length()];
                String[] stringArray1 = new String[innerJsonArray.length()];

                stringArray1[0] =  innerJsonArray.getString("type");
                stringArray1[1] =  innerJsonArray.getString("title");
                stringArray1[2] = "";
                JSONArray jsonArray = (JSONArray) innerJsonArray.getJSONArray("answer");
                for (int j = 0; j < jsonArray.length(); j++) {
                    stringArray1[2] += jsonArray.get(j).toString();
                    stringArray1[2] += ",";
                }

                arrayOfArrays = stringArray1;
                a++;
                writer.writeNext(arrayOfArrays);

            }
            writer.close();
        }
    }