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();
		}
	}





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