JSON的解析

朴灿烈づ我的快乐病毒、 2022-09-26 02:13 212阅读 0赞
  1. import android.app.Activity;
  2. import android.os.Bundle;
  3. import android.util.Log;
  4. import android.view.View;
  5. import android.widget.Button;
  6. import org.apache.http.HttpEntity;
  7. import org.apache.http.HttpResponse;
  8. import org.apache.http.client.HttpClient;
  9. import org.apache.http.client.methods.HttpGet;
  10. import org.apache.http.impl.client.DefaultHttpClient;
  11. import org.apache.http.util.EntityUtils;
  12. import org.json.JSONArray;
  13. import org.json.JSONObject;
  14. /** * Created by Administrator on 2016/9/15 0015. */ public class JsonObject extends Activity implements View.OnClickListener {
  15. private String name;
  16. private Button button;
  17. @Override
  18. protected void onCreate(Bundle savedInstanceState) {
  19. super.onCreate(savedInstanceState);
  20. setContentView(R.layout.test);
  21. button = (Button)findViewById(R.id.button);
  22. button.setOnClickListener(this);
  23. }
  24. private void sendRequestWithHttpClient(){
  25. new Thread(new Runnable() {
  26. @Override
  27. public void run() {
  28. try{
  29. HttpClient httpClient = new DefaultHttpClient();
  30. //指定访问的服务器地址
  31. HttpGet httpGet = new HttpGet("http://app.api.autohome.com.cn/autov4.3/cars/seriesprice-a2-pm2-v4.3.0-b42-t1.html");
  32. HttpResponse httpResponse = httpClient.execute(httpGet);
  33. if(httpResponse.getStatusLine().getStatusCode()==200){
  34. //请求和响应都成功了
  35. HttpEntity entity = httpResponse.getEntity();
  36. String response = EntityUtils.toString(entity,"utf-8");
  37. parseJSONWithJSONObject(response);
  38. }
  39. }catch (Exception e){
  40. e.printStackTrace();
  41. }
  42. }
  43. }).start();
  44. }
  45. /** * 机器是如何读取指令 * {(左花括号)指“开始读取对象” * }(右花括号)指“结束读取对象” * [(左方括号)指“开始读取数组” * ](右方括号)指“结束读取数组” * 以下根据列子 * @param jsonData */ private void parseJSONWithJSONObject(String jsonData){
  46. try{
  47. //第一个是花括号,所以使用JSONObject读取
  48. JSONObject jsonArray = new JSONObject(jsonData);
  49. //result的对应值是花括号,是对象,所以使用JSONObject读取,参数为键值
  50. JSONObject resultObject = jsonArray.getJSONObject("result");
  51. //fctlist的对应值是方括号,是数组,所以使用JSONArray读取,参数是键值
  52. JSONArray fctlistArray = resultObject.getJSONArray("fctlist");
  53. if(fctlistArray.length()==0){
  54. return;
  55. }
  56. //方括号后紧跟一个左花括号,这里fctlist数组内只有1个对象,所以getJSONObject(0),数组下标
  57. // 从0开始,获取第一个对象,所以使用JSONObject读取
  58. JSONObject factory = fctlistArray.getJSONObject(0);
  59. if(!factory.has("serieslist")){
  60. return;
  61. }
  62. //serieslist的对应值为数组,方括号,所以使用JSONArray读取,参数为键值。
  63. JSONArray seriesArray = factory.getJSONArray("serieslist");
  64. //这个数组都是对象,所以使用遍历
  65. for (int i=0;i<seriesArray.length();i++){
  66. JSONObject series = seriesArray.getJSONObject(i);
  67. //参数为键值
  68. name= series.getString("name");
  69. Log.d("1111111111",name);
  70. }
  71. }catch (Exception e){
  72. e.printStackTrace();
  73. }
  74. }
  75. @Override
  76. public void onClick(View v) {
  77. switch (v.getId()){
  78. case R.id.button:
  79. sendRequestWithHttpClient();
  80. break;
  81. default:
  82. break;
  83. }
  84. }
  85. }

发表评论

表情:
评论列表 (有 0 条评论,212人围观)

还没有评论,来说两句吧...

相关阅读