我想(动态地在运行时)存储一些Json数据,如姓名,出生日期,电子邮件和多人的电话号码。为此,使用txt文件并将其保存在SD卡中。 我还想在Listview中显示它们。
为什么创建JsonObject并将其保存到文件的方法是什么。
我实现了一个方法,只检索到我得到一个对象,然后Json阅读器退出while循环。
我的代码段
创建jsonobject并保存
`
File mFile = new File(Environment.getExternalStorageDirectory(), "testfile.txt");
outputStream = new PrintStream (new FileOutputStream (mFile));
JSONObject friend = new JSONObject ();
friend.put("Name", "qwe");
friend.put("Dob", "21-03-91");
outputStream.print (friend.toString ());
friend.put("Name", "fgg");
friend.put("Dob", "02-05-91");
outputStream.print (friend.toString ());
friend.put("Name", "jhg");
friend.put("Dob", "30-01-91");
outputStream.print (friend.toString ());
`
检索到listview
`
String friends = null;
ArrayList<String> friendlist = new ArrayList<String>();
//Get the text file
File file = new File(Environment.getExternalStorageDirectory(), "testfile.txt");
String text=null;
if(file.exists()) // check if file exist
{
//Read text from file
text = new String();
try {
BufferedReader br = new BufferedReader(new FileReader(file));
String line;
while ((line = br.readLine()) != null) {
text+=line;
//text+=',';
}
br.close();
}
catch (IOException e) {
//You'll need to add proper error handling here
e.printStackTrace();
}
}
JsonReader reader = new JsonReader (new StringReader (text));
try {
reader.beginObject ();
while (reader.hasNext ()) {
reader.nextName();
friends = reader.nextString().toUpperCase()+" ";
reader.nextName();
friends+=reader.nextString();
friendlist.add(friends);
friends=null;
}
reader.endObject();
reader.close();
}catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
listAdapter = new ArrayAdapter<String>(this, R.layout.simplerow, friendlist);
listView.setAdapter(listAdapter);`
答案 0 :(得分:1)
文件中的结果将是无效的JSON。它看起来像:
{
"Namea": "qwe",
"Dob": "21-03-91"
}
{
"Namea": "wsx",
"Dob": "21-03-91"
}
{
"Namea": "qtdfddfwe",
"Dob": "21-03-91"
}
您必须序列化根JSON元素,而不是单个JSON元素。 尝试:
JSONArray jsonArray = new JSONArray();
friend1.put("Name", "qwe");
friend1.put("Dob", "21-03-91");
jsonArray.put(friend1);
jsonArray.put(friend2);
jsonArray.put(friend3);
outputStream.print (jsonArray.toString ());
使用这种方法,不要忘记将android.permission.WRITE_EXTERNAL_STORAGE添加到androidManifest.xml。
但是我建议使用sqlite数据库来存储数据。