Java 将FirebaseDatabase jsonObject转换为jsonArray,然后将jsonArray转换为.xlsx格式

Java 将FirebaseDatabase jsonObject转换为jsonArray,然后将jsonArray转换为.xlsx格式,java,android,firebase-realtime-database,android-json,Java,Android,Firebase Realtime Database,Android Json,我正在从Firebase数据库中获取DataSnapshot作为JsonObject。我必须将这个JsonObject转换成JsonArray,然后将该JsonArray转换成Excel格式,然后将该文件下载到移动存储中。我该怎么做 在这里,我在点击按钮时获得了DataSnapshot: btnJson.setOnClickListener(新视图.OnClickListener(){ @凌驾 公共void onClick(视图){ databaseReference.addListenerFo

我正在从Firebase数据库中获取DataSnapshot作为
JsonObject
。我必须将这个
JsonObjec
t转换成JsonArray,然后将该JsonArray转换成Excel格式,然后将该文件下载到移动存储中。我该怎么做

在这里,我在点击按钮时获得了
DataSnapshot

btnJson.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
databaseReference.addListenerForSingleValueEvent(新的ValueEventListener()){
@凌驾
public void onDataChange(@NonNull DataSnapshot DataSnapshot){
long a=dataSnapshot.getChildrenCount();
系统输出打印项次(“lc”+a);
对于(DataSnapshot ds:DataSnapshot.getChildren()){
系统输出打印项次(“响应1”+ds);
}
}
@凌驾
已取消的公共void(@NonNull DatabaseError DatabaseError){
}
});
}
});
下面是我在jsonObject中单击按钮得到的响应:

{key=13uhnjvczw,value={survey_title=Sports, 问题={4={type=2,title=谁是西甲最佳射手?}, 0={options={0=13,1=5},type=1,title=ucl有多少皇家马德里 韩元},1={options={0=皇家马德里足球俱乐部,1=利物浦足球俱乐部},type=1, title=谁是当前UCL冠军?},3={type=2,title=谁是冠军 加州大学学院最佳射手?},2={options={0=克里斯蒂亚诺·罗纳尔多,1=齐内丁 齐达内},类型=1,头衔=谁是皇马历史上的最佳射手 马德里?}}}}}}

File csvFile=新文件(目录,Utils.CSV\u文件名);
尝试
{
csvFile.createNewFile();
CSVWriter csvWrite=新的CSVWriter(新的文件编写器(csvFile));
字符串标题[]={“vid”、“vnumber”、“vname”、“vyear”、“fcdate”、“insdate”,
“perdate”、“gtax”、“polcer”};
csvWrite.writeNext(标题);
对于(int i=0;i
public void saveCsv(JSONArray outerArray)抛出IOException、jsoneexception{
if(Build.VERSION.SDK\u INT>=Build.VERSION\u code.M){
if(checkSelfPermission(android.Manifest.permission.WRITE\u EXTERNAL\u STORAGE)!=PackageManager.permission\u provided){
ActivityCompat.requestPermissions(这个新字符串[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},1);
}
}
字符串文件名=referenceNo+“Result”;
字符串rootPath=Environment.getExternalStorageDirectory().getAbsolutePath()+“/test/”;
文件目录=新文件(根路径);
如果(!dir.exists()){
dir.mkdir();
}
File=null;
文件=新文件(根路径,文件名);
如果(!file.exists()){
progressDialog.disclose();
createNewFile();
}
if(file.exists()){
progressDialog.disclose();
CSVWriter writer=new-CSVWriter(新文件编写器(文件),,);
对于(int i=0;i
首先检查@AnasMehar的此链接我必须先将JsonObject转换为JsonArray我该如何首先转换?您需要从的数据快照手动生成JosnArray。xlsx我必须通过应用程序在一个按钮单击功能上完成这一操作您是否为数据库中的对象使用了任何POJO类?如何首先将JsonObject转换为jsonArray?JSONObject obj1=新JSONObject(strAPI_终端);尝试{JSONArray result=obj1.getJSONArray(“terminal”);for(int i=0;iAn解释应该是有序的(by,而不是在注释中)。解释应该是有序的。
File csvFile = new File(directory, Utils.CSV_FILE_NAME);
try 
{
    csvFile.createNewFile();
    CSVWriter csvWrite = new CSVWriter(new FileWriter(csvFile));
    String heading[] = {"vid", "vnumber", "vname", "vyear", "fcdate", "insdate", 
  "perdate", "gtax", "polcer"};
    csvWrite.writeNext(heading);
    for (int i = 0; i < arrayList.size(); i++) 
    {
        YourModel model = arrayList.get(i);// You can also use JsonObject from Json array. 
        String arrStr[] = {String.valueOf(model.getVid()), 
        String.valueOf(model.getVnumber()), model.getVname(), model.getVyear(), 
        model.getFcdate(), model.getInsdate(), model.getPerdate(),model.getGtax(), 
        model.getPolcer() 

        csvWrite.writeNext(arrStr);
    }
    csvWrite.close();
} catch (Exception sqlEx) 
{
    Log.e(TAG, sqlEx.getMessage(), sqlEx);
}
public void saveCsv(JSONArray outerArray) throws IOException, JSONException {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            if (checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
                ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
            }
        }

        String fileName = referenceNo + " Result";
        String rootPath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/test/";
        File dir = new File(rootPath);
        if (!dir.exists()) {
            dir.mkdir();
        }
        File file = null;
        file = new File(rootPath, fileName);
        if (!file.exists()) {
            progressDialog.dismiss();
            file.createNewFile();
        }
        if (file.exists()) {
            progressDialog.dismiss();
            CSVWriter writer = new CSVWriter(new FileWriter(file), ',');
            for (int i = 0; i < outerArray.length(); i++) {
                JSONArray innerJsonArray = (JSONArray) outerArray.getJSONArray(i);


                    arrayOfArrays[k] = stringArray1;
                    writer.writeNext(arrayOfArrays[k]);
                    System.out.println("aa " + Arrays.toString(arrayOfArrays[k]));

                }
            }

            writer.close();
            Toast.makeText(this, fileName + " is been saved at " + rootPath, Toast.LENGTH_LONG).show();
        }
    }
}