`
zhangfan822
  • 浏览: 254137 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

android解析json

阅读更多

上一篇写了java产生json

http://zhangfan822.iteye.com/blog/1880830

这一篇就来写android解析访问servlet返回得到的json

其实上一篇也写了解析的内容..下在直接上代码吧.

解析单数据与多数据的json

单数据{'singer':{'id':01,'name':'zhangfan','gender':'男'}} 
多个数据
{"singers":[ 
        {'id':02,'name':'zf','gender':'男'}, 
        {'id':03,'name':'jerry,'gender':'男'}, 
        {'id':04,'name':'jim,'gender':'男'},
        {'id':05,'name':'lily,'gender':'女'}
]}                                                                            

 

public class JsonActivity extends Activity {
	private TextView tvJson;
	private Button btnJson;
	private Button btnJsonMulti;
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		tvJson = (TextView) this.findViewById(R.id.tvJson);
		btnJson = (Button) this.findViewById(R.id.btnJson);
		btnJsonMulti = (Button) this.findViewById(R.id.btnJsonMulti);
		btnJson.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {
				//普通Json数据
				String strUrl = "http://10.0.2.2:8080/myServlet/JsonServlet1";
				//获得返回的Json字符串
				String strResult = connServerForResult(strUrl);
				//解析Json字符串
				parseJson(strResult);
			}
		});
		btnJsonMulti.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {
				//多个数据的Json
				String strUrl = "http://10.0.2.2:8080/myServlet/JsonServlet2";
				//String strUrl = ServerPageUtil.getStrUrl(UrlsOfServer.JSON_SINGERS);
				String strResult = connServerForResult(strUrl);
				//获得多个Singer
				parseJsonMulti(strResult);
			}
		});
	}
	//访问servlet得到json数据
	private String connServerForResult(String strUrl) {
		// HttpGet对象
		HttpGet httpRequest = new HttpGet(strUrl);
		String strResult = "";
		try {
			// HttpClient对象
			HttpClient httpClient = new DefaultHttpClient();
			// 获得HttpResponse对象
			HttpResponse httpResponse = httpClient.execute(httpRequest);
			if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
				// 取得返回的数据
				strResult = EntityUtils.toString(httpResponse.getEntity());
			}
		} catch (ClientProtocolException e) {
			tvJson.setText("protocol error");
			e.printStackTrace();
		} catch (IOException e) {
			tvJson.setText("IO error");
			e.printStackTrace();
		}
		return strResult;
	}
	// 普通Json数据解析
	private void parseJson(String strResult) {
		try {
			JSONObject jsonObj = new JSONObject(strResult).getJSONObject("singer");
			int id = jsonObj.getInt("id");
			String name = jsonObj.getString("name");
			String gender = jsonObj.getString("gender");
			tvJson.setText("ID号"+id + ", 姓名:" + name + ",性别:" + gender);
		} catch (JSONException e) {
			System.out.println("Json parse error");
			e.printStackTrace();
		}
	}
	//解析多个数据的Json
	private void parseJsonMulti(String strResult) {
		try {
			JSONArray jsonObjs = new JSONObject(strResult).getJSONArray("singers");
			String s = "";
			for(int i = 0; i < jsonObjs.length() ; i++){
				JSONObject jsonObj = ((JSONObject)jsonObjs.opt(i)).getJSONObject("singer");
				int id = jsonObj.getInt("id");
				String name = jsonObj.getString("name");
				String gender = jsonObj.getString("gender");
				s += "ID号"+id + ", 姓名:" + name + ",性别:" + gender+ "\n" ;
			}
			tvJson.setText(s);
		} catch (JSONException e) {
			System.out.println("Jsons parse error !");
			e.printStackTrace();
		}
	}
}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics