1. 程式人生 > >android 資料解析 JSON 開發詳解+視訊

android 資料解析 JSON 開發詳解+視訊

什麼是json:

JSONJavaScript Object Natation的簡稱,它是一種輕量級的資料交換格式,非常適合伺服器與JavaScript的互動。JSON易於人閱讀和編寫。同時也易於機器解析和生成。JSON採用完全獨立語言的文字格式,但是也是用了類似於C語言家族的習慣(包括C,C++,C#,JAVA,JavaScript,Perl,Python等)。這些特性使JSON成為理想的資料交換語言。

 JSON優勢

JSON和XML的比較

  • JSON比XML體積小
  • JSON和JavaScript互動更加方便
  • JSON對資料的描述性沒有XML好
  • JSON的速度要遠遠大於XML
  • JSON的解析要比XML的解析要方便

兩種資料結構

一種是以(key/value)對形式存在的無序的jsonObject物件,一個物件以“{”(左花括號)開始,“}”(右花括號)結束。每個“名稱”後跟一個“:”(冒號);“‘名稱/值’對”之間使用“,”(逗號)分隔。

例如:{"name": "xiaoli"},這就是一個最簡單的json物件,對於這種資料格式,key值必須要是string型別,而對於value,則可以是stringnumberobjectarray等資料型別


另一種資料格式就是有序的value的集合,這種形式被稱為是jsonArray,陣列是值(value)的有序集合。一個數組以“[”(左中括號)開始,“
]”(右中括號)結束。值之間使用“,”(逗號)分隔。

例如:[{“name”: “xiaoli”}{“name”:”xiaoming”},]這就是一個最簡單的jsonArray物件,對於這種資料格式, 值(value)可以是雙引號括起來的字串(string)、數值(number)truefalsenull、物件(object)或者陣列(array)。這些結構可以巢狀。


json object  生成:
<span style="font-size:18px;">private String createJson() throws JSONException
    {
        JSONObject obj = new JSONObject();
        obj.put("name", "xiaoli");
        return obj.toString();
    }</span>

json array  生成:
<span style="font-size:18px;">private String createJsonArray() throws JSONException
	{
		JSONArray array = new JSONArray();
		JSONObject obj = new JSONObject();
		obj.put("name", "xiaoli");
		JSONObject obj1 = new JSONObject();
		obj1.put("name", "xiaowang");
		
		array.put(obj);
		array.put(obj1);
		return array.toString();
	}</span>

json object 解析:
<span style="font-size:18px;">private void parseJson(String json) 
	{
		try
		{
			JSONObject obj = new JSONObject(json);
			String name = obj.getString("name");
			System.out.println("name:"+name);
		}catch (JSONException e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}</span>

json array 解析:
<span style="font-size:18px;"> private void  parseJsonArray(String array) {
    	
    	try {
			JSONArray jarray = new JSONArray(array);
			
			for(int i = 0;i<jarray.length();i++)
			{
				JSONObject obj = jarray.getJSONObject(i);
				Log.e("obj:",obj.toString());
				String value = obj.getString("name");
				Log.e("value:",value);
			}
		} catch (JSONException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}</span>

JSON遍歷:

在個別情況下,可能key是未知的,這時可能需要遍歷JSONObject

    import net.sf.json.JSONObject;  
      
    String json = "{\"name\":\"lss\"}";  
            JSONObject jsonObj = JSONObject.fromObject(json);  
            String name = jsonObj.getString("name");  
              
            Iterator it = jsonObj.keys();  
            List<String> keyListstr = new ArrayList<String>();  
            while(it.hasNext()){  
                keyListstr.add(it.next().toString());  
            }  


json demo 下載地址:

http://download.csdn.net/detail/q610098308/9220179