将FirebaseDatabase中的jsonObject转换为jsonArray,然后将该jsonArray转换为.xlsx格式。

3

我从Firebase数据库中获取了一个JsonObject类型的DataSnapshot。 我需要将此JsonObject转换为JsonArray格式,然后将该JsonArray转换为Excel格式,并下载到移动设备存储中。如何实现?

这里是在按钮点击时获取DataSnapshot的代码:

 btnJson.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            databaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    long a = dataSnapshot.getChildrenCount();
                    System.out.println("lc" + a);
                    for (DataSnapshot ds : dataSnapshot.getChildren()) {
                        System.out.println("response1" + ds);
                    }
                }
                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {
                }
            });
        }
    });

以下是我在单击按钮时收到的jsonObject响应:

{ key = 13uhnjvczw, value = {survey_title=运动, questions={4={type=2, title=西甲最佳射手是谁?}, 0={options={0=13, 1=5}, type=1, title=皇家马德里获得了多少欧冠冠军}, 1={options={0=皇家马德里足球俱乐部,1=利物浦足球俱乐部}, type=1, title=谁是当前的欧冠冠军?}, 3={type=2, title=欧冠最佳射手是谁?}, 2={options={0=克里斯蒂亚诺·罗纳尔多,1=齐达内}, type=1, title=皇家马德里历史上最佳射手是谁?}}} }


请查看此链接 https://stackoverflow.com/questions/45547767/how-to-write-json-data-into-excel-or-csv-format-android/45613338#45613338。 - Anas Mehar
@AnasMehar 首先我需要将JsonObject转换为JsonArray,应该如何做呢? - Umair Iqbal
你需要手动从数据快照中生成JosnArray以用于.xlsx文件。 - Anas Mehar
我必须在按钮点击函数中通过应用程序完成所有这些操作。 - Umair Iqbal
你在数据库中使用任何POJO类来表示对象吗? - Alex Mamo
显示剩余3条评论
1个回答

1
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();
        }
    }
}

需要解释一下。 - Peter Mortensen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接