将 FirebaseDatabase jsonObject 转换为 jsonArray,然后将 jsonArray 转换为 .xlsx 格式
Convert FirebaseDatabase jsonObject to jsonArray and then that jsonArray to .xlsx format
我正在从 Firebase 数据库获取 DataSnapshot 作为 JsonObject
。我必须将此 JsonObjec
t 转换为 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=Sports,
questions={4={type=2, title=Who is the top goal scorer in La Liga?},
0={options={0=13, 1=5}, type=1, title=How many ucl has real madrid
won}, 1={options={0=Real Madrid fc, 1=Liverpool fc}, type=1,
title=Who is the current UCL champion?}, 3={type=2, title=Who is the
top goal scorer in UCL?}, 2={options={0=Cristiano Ronaldo, 1=Zinedine
Zidane}, type=1, title=Who is the all time top scorer of Real
Madrid?}}} }
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();
}
}
}
我正在从 Firebase 数据库获取 DataSnapshot 作为 JsonObject
。我必须将此 JsonObjec
t 转换为 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=Sports, questions={4={type=2, title=Who is the top goal scorer in La Liga?}, 0={options={0=13, 1=5}, type=1, title=How many ucl has real madrid won}, 1={options={0=Real Madrid fc, 1=Liverpool fc}, type=1, title=Who is the current UCL champion?}, 3={type=2, title=Who is the top goal scorer in UCL?}, 2={options={0=Cristiano Ronaldo, 1=Zinedine Zidane}, type=1, title=Who is the all time top scorer of Real Madrid?}}} }
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();
}
}
}