Android初级开发(九)——网络交互—解析JSON格式数据

一、前言
首先还是在web服务器(我这里用的是tomcat)新建json文本
这里写图片描述

文本内容
这里写图片描述

在浏览器上预览一下
这里写图片描述

二、JSONObject方法

1、我们还是在OkHttp的基础上修改代码,布局不变
MainActivity.java代码如下

public class MainActivity extends AppCompatActivity {

    Button sendRequest;
    TextView responseText;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        responseText = (TextView) findViewById(R.id.response_text);
        sendRequest = (Button) findViewById(R.id.send_request);
        sendRequest.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        try{
                            OkHttpClient client = new OkHttpClient();
                            //模拟器是连接不到localhost的,10.0.2.2对于模拟器来说就是电脑本机的IP地址
                            Request request = new Request.Builder().url("http://10.0.2.2:8080/zwj/zwj_jsonTest.json").build();
                            Response response = client.newCall(request).execute();
                            String responseData = response.body().string();
                            //得到服务器返回的数据后,调用parseXMLWithPull()方法解析服务器返回的数据
                            parseJSONWithJSONObjct(responseData);
                        }catch (Exception e){
                            e.printStackTrace();
                        }
                    }
                }).start();
            }
        });
    }

    private void parseJSONWithJSONObjct(String jsonData) {
        try{
            JSONArray jsonArray =  new JSONArray(jsonData);
            for(int i = 0;i < jsonArray.length();i++){
                JSONObject jsonObject = jsonArray.getJSONObject(i);
                String id = jsonObject.getString("id");
                String name = jsonObject.getString("name");
                String version = jsonObject.getString("version");
                Log.d("MainActivity","id is"+ id);
                Log.d("MainActivity","name is"+ name);
                Log.d("MainActivity","version is"+ version);
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }


}

2、看一下日志
这里写图片描述

三、GSON方法
1、添加库依赖
这里写图片描述

2、新增一个实体类,我们命名为APP

public class App {

    private String id;
    private String name;
    private String version;


    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getVersion() {
        return version;
    }

    public void setVersion(String version) {
        this.version = version;
    }
}

3、修改MainActivity.java

public class MainActivity extends AppCompatActivity {

    Button sendRequest;
    TextView responseText;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        responseText = (TextView) findViewById(R.id.response_text);
        sendRequest = (Button) findViewById(R.id.send_request);
        sendRequest.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        try{
                            OkHttpClient client = new OkHttpClient();
                            //模拟器是连接不到localhost的,10.0.2.2对于模拟器来说就是电脑本机的IP地址
                            Request request = new Request.Builder().url("http://10.0.2.2:8080/zwj/zwj_jsonTest.json").build();
                            Response response = client.newCall(request).execute();
                            String responseData = response.body().string();
                            //得到服务器返回的数据后,调用parseXMLWithPull()方法解析服务器返回的数据
                            parseJSONWithGSON(responseData);
                        }catch (Exception e){
                            e.printStackTrace();
                        }
                    }
                }).start();
            }
        });
    }

    private void parseJSONWithGSON(String jsonData) {
        Gson gson = new Gson();
        List<App> appList = gson.fromJson(jsonData, new TypeToken<List<App>>(){}.getType());
        for (App app:appList){
            Log.d("MainActivity","id is"+app.getId());
            Log.d("MainActivity","name is"+app.getName());
            Log.d("MainActivity","version is"+app.getVersion());
        }
    }

}

4、查看日志

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值