Android Json基本使用

在Android开发,和服务器进行数据交互,数据的基本上以json格式的数据为主。
所以整理了一下在开发中Json数据的基本使用。
json数据有2中类型的数据结构Object和Array,
基本数据类型有 string,number,boolean(true,false)和null。

一、Json数据的生成

1.生成json数据

  private void makeJson() {
        JSONObject json = new JSONObject();
        try {
            json.put("name", "张三");
            json.put("age", "23");
            json.put("sex", "男");
            JSONObject jsonAddress = new JSONObject();
            jsonAddress.put("provience", "北京市");
            jsonAddress.put("city", "朝阳区");
            json.put("address", jsonAddress");
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }

生成的json数据:

{
    "address": {
        "city": "朝阳区",
        "provience": "北京市"
    },
    "age": "23",
    "name": "张三",
    "sex": "男"
}

2.map转json

 private void map2Json() {
        Map<String, Object> map = new HashMap<>();
        map.put("name", "张三");
        map.put("age", "23");
        map.put("sex", "男");
        Map<String, String> mapAddress = new HashMap<>();
        mapAddress.put("provience", "北京市");
        mapAddress.put("city", "朝阳区");
        map.put("address", mapAddress);
        JSONObject json = new JSONObject(map);
    }

3.生成JsonArray

JsonArray array =new JsonArray();
JsonObject json = new JsonObject();
array.put(json);

二、Json数据的解析

1.把json字符串转成对象
把从服务器请求到json字符串,生成一个对象,
即可通过这个对象的get方法,获取到json key对应的value。

 Person person = new  Person();
 //result服务器请求的json字符串
 JsonObject json =new JsonObject(result);
 person.parserJson(json);

创建2个实体类:Person和Address
Person.java

public class Person implements Serializable {
    private String name;
    private int age;
    private String sex;
    private Address address;

    public void parserJson(JSONObject json) {
        if (json != null) {
            try {
                name = json.getString("name");
                age = json.getInt("age");
                sex = json.getString("sex");
                address = new Address();
                JSONObject object = json.getJSONObject("address");
                address.parserJson(object);
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    }

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

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

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public Address getAddress() {
        return address;
    }

    public void setAddress(Address address) {
        this.address = address;
    }
}

Address.java

public class Address implements Serializable {
    private String provience;
    private String city;

    public void parserJson(JSONObject json) {
        if (json != null) {
            try {
                provience = json.getString("provience");
                city = json.getString("city");
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    }

    public String getProvience() {
        return provience;
    }

    public void setProvience(String provience) {
        this.provience = provience;
    }

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }
}

2.gson数据解析
gson 的使用需要导入jar包
studio导入gson

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

2.1 gson解析jsonObject类型数据

//result 服务器请求的json字符串
 private void parserGson(String result) {
     Gson gson = new Gson();
     Person person = gson.fromJson(result, Person.class);
 }

2.2 gson解析jsonArray类型数据

private void parserListGson(String result) {
    Gson gson = new Gson();
    Type type = new TypeToken<ArrayList<Person>>() {}.getType();
    List<Person> list = gson.fromJson(result, type);
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值