Android使用okhttp解析json,超简单的案例

在你要实现功能的activity.java里面直接写就行,下面第一段代码是实现okhttp通信


    private void okhttpDate() {
        Log.i("TAG","--ok-");
        new Thread(new Runnable() {
            @Override
            public void run() {
                OkHttpClient client=new OkHttpClient();
                Request request=new Request.Builder().url("localhost:8080/abc").build();
                try {
                    Response sponse=client.newCall(request).execute();
                    date=sponse.body().string();
                    //解析
                    jsonJXDate(date);
                } catch (IOException e) {
                    e.printStackTrace();
                }

            }
        }).start();

    }

然后下面是解析json的方法

Android使用okhttp解析json,超简单的案例_第1张图片

private void jsonJXDate(String date) {
        if(date!=null) {
            try {
                JSONObject jsonObject = new JSONObject(date);
                //转对象
                JSONObject jsonObject1 = jsonObject.getJSONObject("result");
                //对象转数组用来遍历
                JSONArray jsonArray = jsonObject1.getJSONArray("records");
                //遍历数组
                for (int i = 0; i < jsonArray.length(); i++) {
                //将字段的值遍历并转型
                    String cycleType_dictText = jsonArray.getJSONObject(i).getString("cycleType_dictText");
                    String taskName = jsonArray.getJSONObject(i).getString("taskName");
                    String createTime = jsonArray.getJSONObject(i).getString("createTime");
//放入集合中,根据需要是否做下面的操作
                    Map<String, Object> map = new HashMap<>();
                    map.put("cycleType_dictText", cycleType_dictText);
                    map.put("taskName", taskName);
                    map.put("createTime",createTime);
                    list.add(map);
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }

        }

    }

写完上面的方法记得在主方法引用,如下:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_shou);
        //获取数据
        okhttpDate();
    }

你可能感兴趣的:(Andriod)