android JSON解析:官方&GSON方式

来源:互联网 发布:51单片机指令集 编辑:程序博客网 时间:2024/05/16 14:52

同样在apache/hotdoc目录下创建get_data.json文件,内容如下:

[{"id":"5","version":"5.5","name":"Boom Beach"},{"id":"6","version":"7.0","name":"Clash Royale"}]

第一种解析方式:官方解析
调用方法:parseJSONWithJSONObject
具体代码:

public class NetWorkTestActivity extends AppCompatActivity implements View.OnClickListener{    TextView responseText;    @Override    protected void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.networktest_main);        Button sendRequest= (Button) findViewById(R.id.send_request);        responseText= (TextView) findViewById(R.id.response_text);        sendRequest.setOnClickListener(this);    }    @Override    public void onClick(View v) {        if (v.getId()==R.id.send_request){           //sendRequestWithHTTPURLConnection();            sendRequestWithOKHttp();        }    }    private void sendRequestWithOKHttp() {        new Thread(new Runnable() {            @Override            public void run() {                OkHttpClient client=new OkHttpClient();                Request request=new Request.Builder()                        .url("http://10.0.2.2/get_data.json")                        .build();                Response response=null;                try {                   response=client.newCall(request).execute();                    String responseData=response.body().string();                    parseJSONWithJSONObject(responseData);//调用解析方法                    showResponse(responseData);                } catch (IOException e) {                    e.printStackTrace();                }            }        }).start();    }    private void parseJSONWithJSONObject(String responseData) {        try        {            JSONArray jsonArray=new JSONArray(responseData);            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.v("Main","id is"+id);                Log.v("Main","name is"+name);                Log.v("Main","version is"+version);            }        } catch (JSONException e) {            e.printStackTrace();        }    }    private void showResponse(final String s) {        runOnUiThread(new Runnable() {            @Override            public void run() {                responseText.setText(s);            }        });    }}

第二种解析方式:GSON
调用方法:parseJSONWithGSON
步骤(基于以上代码):
1.首先在build.gradle中加入GSON库:

compile 'com.google.code.gson:gson:2.7'

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.接着将调用方法改为parseJSONWithGSON,实现如下:

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

其实主要步骤就是创建了一个类,然后通过gson.fromJson方法把数据解析成类对象并获取信息。

原创粉丝点击