Android,okhttp工具类+fastjson解析+传递JSON数组。

okhttp类的简单封装,看连接,有大佬摘出来的操作,实测可以。
说明:设计为单例模式,以及在回调用接口的方法把回调,放入主线程中,这样就可以修改UI了,不过需要注意一点的是,不能传递response到主线程。只能把值传递到主线程,否则报错。
Okhttp类的简单封装

fastjson解析,
写的清楚一点以及理解的话,就是把json数据变成了一个对象,然后就相当于你这个类,去创造够多的字段。一个类就能接受许多的json数据了。
而json里面又有多的json数据的话,就再多一个类。
(由已知,判断创建)
fastjson解析

由于用okhttp类时,用的是map传递数据过去。所以主要是map数据的传入和取出重要。
而当我要传递int[] a=[0,0,0]时,但直接.
int New_Bnad[]={0,0,0,0,2};
map.put(“Old_Band”,Old_JSONBand);
是没办法读出这个数组的。需要转换为JSON数组才行。

 int New_Bnad[]={0,0,0,0,2};
              JSONArray New_JSONBand = null,Old_JSONBand= null;
              try {
                 
                  New_JSONBand = new JSONArray(New_Bnad);
              } catch (JSONException e) {
                  e.printStackTrace();
              }
               map.put("New_Band",New_JSONBand);

这样就没有问题了。

传递json数据格式,操作如下.

  JSONObject obj = new JSONObject();//表单对象,包含以input开始的对象,以html表单为主
 obj.put(entry.getKey(),entry.getValue());
 RequestBody body = RequestBody.create(type,""+obj.toString());
 Request request = new Request.Builder().url(url).post(body).build();//采用post提交数据

截取一段自己的代码段:

OkHttpUtil httpUtil;
 httpUtil = OkHttpUtil.getInstance(MainActivity.this);
 //发送请求以及解析数据
  HashMap<String,Object> map = new HashMap();
                map.put("","");
                String url="http://10.0.2.2/py/GTK_frequencyPoint.py";
                MediaType type=MediaType.parse("application/json; charset=utf-8");
                httpUtil.postJSON(url, map, type, new OkHttpUtil.ResultCallback() {
                    @Override
                    public void onError(Request request, Exception e) {
                        Log.d(TAG, "Button_GetEqPoint,onError: ",e);
                    }
                    @Override
                    public void onResponse(Response response,String responseData) throws IOException {
                        //String responseData = response.body().string();
                        Log.d(TAG, "response: "+responseData);
                        response_fastjson response_fastjson= JSON.parseObject(responseData,response_fastjson.class);
                        Log.d(TAG, "onResponse: xxx:"+response_fastjson.getStatus());
                        Log.d(TAG, "onResponse: xxx:"+response_fastjson.getDescribe());
                        Log.d(TAG, "onResponse: xxx:"+response_fastjson.getBands());
                        String Text="Status:"+response_fastjson.getStatus()+"  Describe:"+response_fastjson.getDescribe()+"  Bands:"+response_fastjson.getBands().toString();
                        mTextView.setText(Text);
                       // Log.d(TAG, "Button_GetEqPoint_onResponse: "+responseData);
                    }
                });

你可能感兴趣的:(WAMP服务类的操作。,java,json,android)