Gson解析的一些方法

转载地址 : https://www.cnblogs.com/jianyungsun/p/6647203.html

本文纯属自己加深印象,无意抄袭,转载地址在上面。

纯属手动有些拼写错误,请前往原文了解

解析简单纯数据json

  {
    "name": "zhangsan",
    "age": "10",
    "phone": "11111",
    "email": "[email protected]"
  }

解析代码:

本地将json文件转成String方法
public static String getStringByJson(Context context, int fileId){
        String resultString="";
        try {
            InputStream inputStream=context.getResources().openRawResource(fileId);
            byte[] buffer=new byte[inputStream.available()];
            inputStream.read(buffer);
            resultString=new String(buffer,"UTF-8");
        } catch (Exception e) {
            e.printStackTrace();
        }
        return resultString;
    }

解析步骤
第一步
通过本地方法将json文件内的数据转换成String
String resultobject= JsonToStringUtil.getStringByJson(MainActivity.this,R.raw.gson_1);
第二步 获取JsonParser解析对象
JsonParser parser=new JsonParser();
第三步 通过JsonParser中getASJsonObject得到JsonObject
JsonObject object=parser.parser(resultobject).getASJsonObject();
第四步 通过TypeToken得到Type就相当于实例UserBean.class的类
Type type=new TypeToken<Map<String,String>>(){}.getType();
第五步解析操作
Map<String,String> map=gson.fromJson(object,type);
第六步 通过循环得到内容
for (Map.Entry<String,String> entry:map.entrySet()){
tv_text.setText(entry.getKey()+"|"+entry.getValue());
} 

第二种 解析存数组

[
  {
    "name": "zhangsan",
    "age": "10",
    "phone": "11111",
    "email": "[email protected]"
  },
  {
    "name": "lisi",
    "age": "20",
    "phone": "22222",
    "email": "[email protected]"
  },
  ...
    }
]

解析代码

本地将json文件转成String方法
public static String getStringByJson(Context context, int fileId){
        String resultString="";
        try {
            InputStream inputStream=context.getResources().openRawResource(fileId);
            byte[] buffer=new byte[inputStream.available()];
            inputStream.read(buffer);
            resultString=new String(buffer,"UTF-8");
        } catch (Exception e) {
            e.printStackTrace();
        }
        return resultString;
    }

第一步通过本地方法转换成String
String resultobject=JsonToStringUtil.getStringByJson(MainActivity.this,R.raw.gson_2);
第二步得解析对象
JsonParser parser1 = new JsonParser();
第三步通过JsonParser中JsonASArray 得到数组
JsonArray array=parser.parser(resultobject).getASJsonArray();
第四步 得GSON 对象用于解析
Gson gson=new Gson;
List<UserBean> userbeanList=new ArrayList<>();

第五步通过JsonElement方法来遍历array数组
for(JsonElement user: array ){
第六步解析
UserBean userbean=gson.fromJson(user,UserBean.class);
userbeanList.add(userbean)
//适配器自己写一个
lv_list.setAdapter(new UserAdapter(Mainactivity.this,userbeanList));
}

//适配器代码
public class UserAdapter extends BaseAdapter{

    private Context context;
    private List<UserBean> userBeanList;
    private LayoutInflater inflater;

    public UserAdapter(){}

    public UserAdapter(Context context,List<UserBean> userBeanList){
        this.context=context;
        this.userBeanList=userBeanList;
        inflater=LayoutInflater.from(context);
    }

    @Override
    public int getCount() {
        return userBeanList==null?0:userBeanList.size();
    }

    @Override
    public Object getItem(int i) {
        return userBeanList.get(i);
    }

    @Override
    public long getItemId(int i) {
        return i;
    }

    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
        ViewHlder viewHlder=null;
        if (view == null){
            view=inflater.inflate(R.layout.list_adapter,null);
            viewHlder=new ViewHlder();
            viewHlder.textView=view.findViewById(R.id.tv_text);
            viewHlder.textView1=view.findViewById(R.id.tv_text1);
            viewHlder.textView2=view.findViewById(R.id.tv_text2);
            viewHlder.textView3=view.findViewById(R.id.tv_text3);
            view.setTag(viewHlder);
        }else {
           viewHlder=(ViewHlder) view.getTag();
        }
            viewHlder.textView.setText(userBeanList.get(i).getName());
            viewHlder.textView1.setText(userBeanList.get(i).getAge());
            viewHlder.textView2.setText(userBeanList.get(i).getPhone());
            viewHlder.textView3.setText(userBeanList.get(i).getEamile());

        return view;
    }
    class ViewHlder{
        private TextView textView;
        private TextView textView1;
        private TextView textView2;
        private TextView textView3;
    }
}

第三种解析

{
  "muser": [
    {
      "name": "zhangsan",
      "age": "10",
      "phone": "11111",
      "email": "[email protected]"
    },
    {
      "name": "lisi",
      "age": "20",
      "phone": "22222",
      "email": "[email protected]"
    },
    ...
  ]
}

解析代码

本地将json文件转成String方法
public static String getStringByJson(Context context, int fileId){
        String resultString="";
        try {
            InputStream inputStream=context.getResources().openRawResource(fileId);
            byte[] buffer=new byte[inputStream.available()];
            inputStream.read(buffer);
            resultString=new String(buffer,"UTF-8");
        } catch (Exception e) {
            e.printStackTrace();
        }
        return resultString;
    }

第一步通过本地方法转换成String
String resultobject=JsonToStringUtil.getStringByJson(MainActivity.this,R.raw.gson_2);
第二步得解析对象
JsonParser parser1 = new JsonParser();
第三步通过JsonParser中JsonASObject 得到object
JsonObject object=parser.parser(resultobject).getASJsonObject();
JsonArray array=object.getASJsonArray("muser");
//第五步等得到GSON对象和List集合对象
Gson gson1 = new Gson();
List<UserBean> userBeanlist1 = new ArrayList<UserBean>();
//通过JsonElemnt遍历数组并显示到adapter上
for (JsonElement user: array1) {
UserBean userBear=gson1.fromJson(user,new TypeToken<UserBean>(){}.getType());
userBeanlist1.add(userBear);
}
设置在listView上
tv_listView.setAdapter(new UserAdapter(MainActivity.this,userBeanlist1));

第四种解析

{
  "code": 200,
  "msg": "OK",
  "muser": [
    {
      "name": "zhangsan",
      "age": "10",
      "phone": "11111",
      "email": "[email protected]"
    },
    {
      "name": "lisi",
      "age": "20",
      "phone": "22222",
      "email": "[email protected]"
    },
   ...
  ]
}

多了个code,与msg

这个时候我们的UserBean实例需要变一下

public class UserBeankz {
    private String code;
    private String msg;
    private List<UserBean> muser;

    public class UserBean{

        private String name ;

        private String age;

        private String phone;

        private String email;

        public String getName() {
            return name;
        }

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

        public String getAge() {
            return age;
        }

        public void setAge(String age) {
            this.age = age;
        }

        public String getPhone() {
            return phone;
        }

        public void setPhone(String phone) {
            this.phone = phone;
        }

        public String getEmail() {
            return email;
        }

        public void setEmail(String email) {
            this.email = email;
        }
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public List<UserBean> getMuser() {
        return muser;
    }

    public void setMuser(List<UserBean> muser) {
        this.muser = muser;
    }
}

解析代码

本地将json文件转成String方法
public static String getStringByJson(Context context, int fileId){
        String resultString="";
        try {
            InputStream inputStream=context.getResources().openRawResource(fileId);
            byte[] buffer=new byte[inputStream.available()];
            inputStream.read(buffer);
            resultString=new String(buffer,"UTF-8");
        } catch (Exception e) {
            e.printStackTrace();
        }
        return resultString;
    }

第一步通过本地方法转换成String
String resultobject2=JsonToStringUtil.getStringByJson(MainActivity.this,R.raw.gson_3);
第二步直接解析json 
UserBeankz user=new Gson().fromJson(resultobject2,UserBeankz.class);
第三步从UserBean中的实例方法得到muser,然后将muser中的数据展示在listView上
List<UserBeankz.UserBean> users=user.getMuser();
 lv_list.setAdapter(new ResultAdapter(MainActivity.this,users));

第五中解析

{
  "muser": [
    {
      "name": "zhangsan",
      "age": "10",
      "phone": "11111",
      "email": "[email protected]"
    },
    {
      "name": "lisi",
      "age": "20",
      "phone": "22222",
      "email": "[email protected]"
    }
  ]
}

解析代码

这里要解析判断age大于30岁的人或者其他判断,由自己设定

本地将json文件转成String方法
public static String getStringByJson(Context context, int fileId){
        String resultString="";
        try {
            InputStream inputStream=context.getResources().openRawResource(fileId);
            byte[] buffer=new byte[inputStream.available()];
            inputStream.read(buffer);
            resultString=new String(buffer,"UTF-8");
        } catch (Exception e) {
            e.printStackTrace();
        }
        return resultString;
    }

第一步通过本地方法转换成String
String resultobject2=JsonToStringUtil.getStringByJson(MainActivity.this,R.raw.gson_3);
第二步得JsonParser解析对象
JsonParser parser=new JsonParser();
JsonObject object=parser.parser(resultobject).getASObject();
JsonArray array=object.getASArray("muser");
Gson gson=new Gson();
List<UserBean> list=new ArrayList<>();

遍历
for(JsonElement user:array){
UserBean userbean=gson.fromJson(user,new TypeToken<UserBean>(){}.getType);
判断
if(Inter.parInt(userbean.getAge()>30)){
    list.add(userbean);
}
}
lv.setAdapter(new UserAdapter(this,list));

猜你喜欢

转载自blog.csdn.net/qq_25108967/article/details/81703736