JSON的解析

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.json.JSONArray;
import org.json.JSONObject;

/**
 * Created by Administrator on 2016/9/15 0015.
 */
public class JsonObject extends Activity implements View.OnClickListener {
    private String name;
    private Button button;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.test);
        button = (Button)findViewById(R.id.button);
        button.setOnClickListener(this);
    }


    private void sendRequestWithHttpClient(){
        new Thread(new Runnable() {
            @Override
            public void run() {
                try{
                    HttpClient httpClient = new DefaultHttpClient();
                    //指定访问的服务器地址
                    HttpGet httpGet = new HttpGet("http://app.api.autohome.com.cn/autov4.3/cars/seriesprice-a2-pm2-v4.3.0-b42-t1.html");
                    HttpResponse httpResponse = httpClient.execute(httpGet);
                    if(httpResponse.getStatusLine().getStatusCode()==200){
                        //请求和响应都成功了
                        HttpEntity entity = httpResponse.getEntity();
                        String response = EntityUtils.toString(entity,"utf-8");
                        parseJSONWithJSONObject(response);
                    }
                }catch (Exception e){
                    e.printStackTrace();
                }
            }
        }).start();
    }

    /**
     * 机器是如何读取指令
     * {(左花括号)指“开始读取对象”
     * }(右花括号)指“结束读取对象”
     * [(左方括号)指“开始读取数组”
     * ](右方括号)指“结束读取数组”
     * 以下根据列子
     * @param jsonData
     */
    private void parseJSONWithJSONObject(String jsonData){
        try{
            //第一个是花括号,所以使用JSONObject读取
            JSONObject jsonArray = new JSONObject(jsonData);
            //result的对应值是花括号,是对象,所以使用JSONObject读取,参数为键值
            JSONObject resultObject = jsonArray.getJSONObject("result");
            //fctlist的对应值是方括号,是数组,所以使用JSONArray读取,参数是键值
            JSONArray fctlistArray = resultObject.getJSONArray("fctlist");
            if(fctlistArray.length()==0){
                return;
            }
            //方括号后紧跟一个左花括号,这里fctlist数组内只有1个对象,所以getJSONObject(0),数组下标
            // 从0开始,获取第一个对象,所以使用JSONObject读取
            JSONObject factory = fctlistArray.getJSONObject(0);
            if(!factory.has("serieslist")){
                return;
            }
            //serieslist的对应值为数组,方括号,所以使用JSONArray读取,参数为键值。
            JSONArray seriesArray = factory.getJSONArray("serieslist");

            //这个数组都是对象,所以使用遍历
            for (int i=0;i<seriesArray.length();i++){
                JSONObject series = seriesArray.getJSONObject(i);
                //参数为键值
                name= series.getString("name");
                Log.d("1111111111",name);
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.button:
                sendRequestWithHttpClient();
                break;
            default:
                break;
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值