在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);
}