什麼是JSON
1.JSON(JavaScript Object Notation):是一種基於JavaScript語言的輕量級的資料交換格式
2.JSON資料是一系列索引值對的集合
3.JSON已經被大多數開發人員接受,在網路資料的傳輸當中應用非常廣泛
4.JSON相對於XML來講解析稍微方便一些
JSON資料格式的特點 JSON VS XML
為什麼使用 JSON?
對於 AJAX 應用程式來說,JSON 比 XML 更快更易使用:
相比 XML 的不同之處
- 沒有結束標籤
- 更短
- 讀寫的速度更快
- 能夠使用內建的 JavaScript eval() 方法進行解析
- 使用數組
- 不使用保留字
JSON 資料的書寫格式是:成對的名稱和數值。
成對的名稱和數值包括欄位名稱(在雙引號中),後面寫一個冒號,然後是值:
從上到下的符號解說
[{"name":"zhangsan","age":20},{"name":"lisi","age":30}]
1.[是開始解析數組
2. {開始解析對象
3."name":"zhangsan"解析解析索引值對
4."age":20解析解析索引值對
5. }解析對象結束
6. {開始解析對象
7."name":"lisi" 解析索引值對
8."age":30 解析索引值對
9. }解析對象結束
10. ] 解析數組結束
輸出結果:
上面是輸出結果,下面是具體代碼實現:
這段代碼講解如何用的 JsonReader
1 public class JsonUtils{ 2 public void parseJson(String jsonData){ 3 try{ 4 //如果需要解析JSON資料,首先要產生一個JsonReader對象 5 JsonReader reader = new JsonReader(new StringReader(jsonData)); 6 reader.beginArray(); //開始解析數組 7 while(reader.hasNext()){ //hasNext就是 有沒有下一組 索引值對 8 String tagName = reader.nextName(); //reader.nextName() 得到下一個索引值對的Name 9 if(tagName.equals("name")){ 10 System.out.println("name--->" + reader.nextString());11 }12 else if(tagName.equals("age")){ //age是 數字,不用加引號13 System.out.println("age--->" + reader.nextInt()); //nextInt 得到下一個 索引值對的 整形數字 14 }15 16 } 17 reader.endObject();18 }19 reader.endArray();20 }21 catch(Exception e){22 e.printStackTrace(); 23 }24 }25 }
public class MainActivity extends Activity{ // \" 逸出字元 private string jsonData = "[{\"name\":\"Michael\",\"age\":20},{\"name\":\"Mike\",\"age\":21}]"; private Button button; public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); button = (Button)findViewById(R.id.buttonId); button.setOnClickListener(new ButtonListener()); } private class ButtonListener implements OnClickListener{ public void onClick(View v){ JsonUtils jsonUtils = new JsonUtils(); jsonUtils.parseJson(jsonData); } }}