Android读写JSON格式的数据之JsonWriter和JsonReader
近期的好几个月都没有搞Android编程了,逐渐的都忘却了一些东西。近期打算找一份Android的工作,要继续拾起曾经的东西。公司月初搬家之后就一直没有网络,直到今日公司才有网络接入,各部门才開始办公。不说这些了,以下開始今天的正文。
JSON格式的数据通经常使用于网络传输。尤其是在移动设备上与服务端进行数据交互。
JSON与XML比較有明显的优势。XML格式的数据非常臃肿,传递少量的数据就要附带非常多额外的格式数据。而JSON除了少量的符号外。所有是真正的数据。所以有越来越多的程序用JSON来代替XML。JSON格式的数据不仅被广泛应用于网络传输,也经经常使用于本地存储。
JSON格式的数据能够存储数组和对象。数组用一对中括号([……])表示。对象用一对大括号({……})表示。数组和对象能够嵌套。比如,以下是一个用JSON表示的对象数组:
[{id:1,name:”Android将军”},{id:2,name:”Android将军”}]
Android SDK用于读写JSON格式数据的类是JsonReader和JsonWriter。这两个类能够处理数组和对象,处理数组的代码必须放在beginArray和endArray方法之间,处理对象的代码必须放在beginObject和endObject之间。
这里给出一个读写JSON文件案例,主Activity代码例如以下:
package com.gc.androidjsonpractice; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import android.os.Bundle; import android.os.Environment; import android.annotation.SuppressLint; import android.app.Activity; import android.graphics.Paint.Join; import android.util.JsonReader; import android.util.JsonWriter; import android.widget.Toast; /** * 功能:复习与练习Json的使用一 * * @author Android将军 * */ @SuppressLint("NewApi") public class MainActivity extends Activity { private String filePath; private FileOutputStream fileOutputStream; private FileInputStream fileInputStream; @SuppressLint({ "NewApi", "SdCardPath" }) @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //json文件存放路径 filePath = Environment.getExternalStorageDirectory().toString() + "/test.json"; System.out.println("filePath:" + filePath);//查看实际路径 try { fileOutputStream = new FileOutputStream(filePath); @SuppressWarnings("resource") //開始写JSON数据 JsonWriter jsonWriter = new JsonWriter(new OutputStreamWriter( fileOutputStream, "UTF-8")); jsonWriter.beginObject(); jsonWriter.name("id").value("1"); jsonWriter.name("name").value("Android将军"); jsonWriter.endObject(); System.out.println("JSON数据写入完成!"); jsonWriter.close(); // 開始读JSON数据 System.out.println("開始读取JSON数据"); fileInputStream = new FileInputStream(filePath); @SuppressWarnings("resource") JsonReader jsonReader = new JsonReader(new InputStreamReader( fileInputStream, "UTF-8")); jsonReader.beginObject(); System.out.println("哈哈:"+jsonReader.toString()); while (jsonReader.hasNext()) { if (jsonReader.nextName().equals("id")) { System.out.println("id:" + jsonReader.nextString()); } if (jsonReader.nextName().equals("name")) { System.out.println("name:" + jsonReader.nextString()); } } jsonReader.endObject(); jsonReader.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
程序执行结果例如以下:
转载请注明出处:http://blog.csdn.net/android_jiangjun/article/details/38730207