Android Json解析

整个项目在附件中。包括服务器端,首先要在server.properties中配置你的机器的IP地址,不可以localhost或者127.0.0.7

单数据{'singer':{'id':01,'name':'刘德华','gender':'男'}}
多个数据{"singers":[
{'id':02,'name':'刘德华','gender':'男'},
{'id':03,'name':'uuuuu,'gender':'男'},
{'id':04,'name':'ffff,'gender':'男'},
{'id':05,'name':'yyyyy,'gender':'男'}]}

public class JsonActivity extends Activity {
/** Called when the activity is first created. */
private TextView tvJson;
private Button btnJson;
private Button btnJson1;

@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);

btnJson.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// url
// String strUrl = "http://10.158.166.110:8080/AndroidServer/JsonServlet";
String strUrl = ServerPageUtil.getStrUrl(UrlsOfServer.JSON_SINGER);
//获得返回的Json字符串
String strResult = connServerForResult(strUrl);
//解析Json字符串
parseJson(strResult);
}
});

btnJson1 = (Button) this.findViewById(R.id.btnJson1);

btnJson1.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// url
String strUrl = ServerPageUtil.getStrUrl(UrlsOfServer.JSON_SINGERS);
//获得Json字符串
String strResult = connServerForResult(strUrl);
//获得Json的解析
// parseJson(strResult);
//获得多个Singer
parseJsons(strResult);

}
});
}

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());
// System.out.println(strResult);
// tvJson.setText(strResult);
}
} 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 + "," + name + ";" + gender);
} catch (JSONException e) {
System.out.println("Json parse error");
e.printStackTrace();
}
}

private void parseJsons(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 + "," + name + "," + gender + "\n" ;

}
tvJson.setText(s);
} catch (JSONException e) {
System.out.println("Jsons parse error !");
e.printStackTrace();
}
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值