android json數據的解析

JSON是什麼


JSON是JvaScript Object Natation,是一種輕量級的數據交換格式


JSON的語法

1、數據在名稱/值對中      "name":"Kobe"

2、數據由逗號分割 "name":"Kobe","team":"Lakers"

3、花括號{}表示對象 "star":{"name":"Kobe","team":"Lakers"}

4、方括號[]表示數組      {"stars":[{"name":"Kobe","team":"Lakers"},{"name":"Curry","team":"Warriors"}]}


正確的json

{
    "stars": [
        {
            "star": {
                "name": "Kobe",
                "team": "Lakers"
            }
        },
        {
            "star": {
                "name": "Curry",
                "team": "Warriors"
            }
        }
    ]
}


使用JSONArray與JSONObject解析


1、簡單的JSON的解析

首先準備一個json文件放在android的assets目錄下

[

{"name":"Kobe","team":"Lakers"}
,
{"name":"Durant","team":"Thunder"}
,
{"name":"Curry","team":"Warriors"}

]

讀取JSON文件的方法

public String getJSONData(String fileName){
		StringBuilder result=new StringBuilder();
		String line="";
		try {
			InputStream in=getResources().getAssets().open(fileName);
			
			BufferedReader br=new BufferedReader(new InputStreamReader(in));
			while((line=br.readLine())!=null){
				result.append(line);
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return result.toString();
	}


 解析json的方法

private void parseJSON(String jsonData){
		//JSONArray array;
		
		try {
			JSONArray array = new JSONArray(jsonData);

		for(int i=0;i<array.length();i++){
			JSONObject object=array.getJSONObject(i);
			
				String name=object.getString("name");
				String team=object.getString("team");
				Log.i(TAG, "name is:-------"+name);
				Log.i(TAG, "team is:-------"+team);
			}
		} catch (JSONException e) {
			e.printStackTrace();
		}
	}


將stars.json傳遞進去運行後可得到解析後的數據



2、複雜一點的json解析

json數據

{
    "stars": [
        {
            "star": {
                "name": "Kobe",
                "team": "Lakers"
            }
        },
        {
            "star": {
                "name": "Curry",
                "team": "Warriors"
            }
        }
    ]
}

解析方法

private void parseJSON(String jsonData){
	
		
		try {
			JSONObject stars=new JSONObject(jsonData);
			JSONArray array=stars.getJSONArray("stars");
			for(int i=0;i<array.length();i++){
				JSONObject star=array.getJSONObject(i);
				JSONObject obj=star.getJSONObject("star");
				String name=obj.getString("name");
				String team=obj.getString("team");
				Log.i(TAG, "name is:-------"+name);
				Log.i(TAG, "team is:-------"+team);
			}
		} catch (JSONException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	




使用GSON進行JSON解析


首先下載到需要的jar文件,加到libs文件裏

新建一個JavaBean

public class Star {
	
	private String mName;
	private String mTeam;
	public String getName() {
		return mName;
	}
	public void setName(String name) {
		mName = name;
	}
	public String getTeam() {
		return mTeam;
	}
	public void setTeam(String team) {
		mTeam = team;
	}
	

}


1、解析一個JSON對象

Gson gson=new Gson();
Star star=gson.fromJson(jsonData, Star.class);

2、解析一個JSON數組

public void parseJSONWithGson(){
				try{
		InputStream in=getResources().getAssets().open("stars.json");
		BufferedReader br=new BufferedReader(new InputStreamReader(in));
		StringBuilder result=new StringBuilder();
		String line="";
		while((line=br.readLine())!=null){
			result.append(line);
		}
		Gson gson=new Gson();
		List<Star> stars=gson.fromJson(result.toString(), new TypeToken<List<Star>>(){}.getType());

		for(Star star:stars){
			Log.i(TAG, star.toString());
		}
		}catch(Exception e){
			e.printStackTrace();
		}
	}





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章