Json数据解析—JsonObject和GSON方式简单用法

2019-08-07  本文已影响0人  见哥哥长高了

下面是一个Json字符串:

String jsonStr = "[{"id":"1","name":"数据结构","version":"2.1"},{"id":"2","name":"软件工程","version":"3.1"},{"id":"3","name":"操作系统构","version":"4.1"}]";

我们要使用JsonObject和GSON的式把这段简单的字符解析。

JsonObject
  public void parserJsonWithJsonObject(){

        String jsonStr = "[{\"id\":\"1\",\"name\":\"数据结构\",\"version\":\"2.1\"},{\"id\":\"2\",\"name\":\"软件工程\",\"version\":\"2.1\"},{\"id\":\"3\",\"name\":\"操作系统\",\"version\":\"2.1\"}]";

        try {
            JSONArray jsonArray = new JSONArray(jsonStr);

            for (int i = 0; i < jsonArray.length();i++){

                JSONObject object =  jsonArray.getJSONObject(i);

                String name = object.getString("name");
                String id = object.getString("id");
                String version = object.getString("version");

                Toast.makeText(MainActivity.this,"name="+name+" id="+id+" version"+version,Toast.LENGTH_LONG).show();
            }
        }catch (Exception e){

            e.printStackTrace();

        }

   }
GSON

在这里需要结合面向对象的思想。首先分析Json字符串可以转化成的模型类,新建一个类可以用来填充字符串中的数据。我们新建一个类User,并实现其setter和getter方法。

    public  class User{

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

        public String getId() {
            return id;
        }

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

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

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

        public String getName() {
            return name;
        }

        public String getVersion() {
            return version;
        }
    }

解析的实现

    public void parserJsonWithGSON(){


        String jsonStr = "[{\"id\":\"1\",\"name\":\"数据结构\",\"version\":\"2.1\"},{\"id\":\"2\",\"name\":\"软件工程\",\"version\":\"2.1\"},{\"id\":\"3\",\"name\":\"操作系统\",\"version\":\"2.1\"}]";

        Gson gson = new Gson();

        List<User> userList = gson.fromJson(jsonStr,new TypeToken<List<User>>(){}.getType());

        for (User user : userList){

            Toast.makeText(MainActivity.this,"name="+user.getName()+" id="+user.getId()+" version="+user.getVersion(),Toast.LENGTH_LONG).show();

        }
    }

在工程中如果要使用GSON,需要在app/build.gradle中增加:

compile 'com.google.code.gson:gson:2.8.4'
上一篇 下一篇

猜你喜欢

热点阅读