我想将大型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(); }}
解决方法:
我从这里http://sourceforge.net/projects/opencsv/使用了opencsv-2.3.jar.这里记录了http://sourceforge.net/projects/opencsv/
我有跟随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) 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(); }}
总结 以上是内存溢出为你收集整理的如何在Android上将多维JSON数组保存到CSV文件?全部内容,希望文章能够帮你解决如何在Android上将多维JSON数组保存到CSV文件?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)