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

来源:互联网 发布:java面试问题 编辑:程序博客网 时间:2024/05/17 07:04

一、前言
首先还是在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、查看日志

这里写图片描述