Android----json学习
Android----json学习
json简介
当前最主流的、轻量级的数据交换格式,尤其是经历过前后台分离开发的人,能明显感觉出json格式的强大。
json语法
例如:
[
{
"a1": "A.有什么样的童年,就有什么样的作家。作家就是其成长衍生的情感、观察和思考。",
"a2": "B.团队的组织者能否正确地指引方向,是一个团队能否成为优秀团队的决定性因素。",
"a3": "C.只有建立起国家监督制度,对历史文化名城的保护才能做到有法可依、有法必依。",
"a4": "D.消费者一旦被认定在消费中蒙受精神损害,经营者将支付至少五万元的精神赔偿费。",
"analyze": "【应试指导】A项“作家”与“情感、观察和思考”主宾搭配不当。应把“作家”改为“作家的作品”。原句为“有什么样的童年,就有什么样的作家,作家的作品本质上是他的自叙传,是由他的成长经历衍发的情感、观察和思考。” 【故答案当选A】",
"answer": "A",
"id": 26,
"point": 1,
"title": "【基础知识题】下列各句中,有语病的一项是()。",
"type": ""
},
{
"a1": "A.(拙)笨 (黜)免 咄咄(逼)人",
"a2": "B.(蕴)藏 (瘟)疫 不(温)不火",
"a3": "C.(臭)氧 铜(臭) 乳(臭)未干",
"a4": "D.(渎)职 案(牍) 买(椟)还珠",
"analyze": "【应试指导】 拙(zhuo一声)笨,罢黜(chu四声),咄咄(duo一声)逼人;铜臭(xiu四声) 【故答案当选A】",
"answer": "A",
"id": 64,
"point": 1,
"title": "【基础知识题】下列词语中加点字的读音全都不相同的一组是()",
"type": ""
}
]
1个json文件包含很多数据,这些数据都是以键值对(准确的来说应该是json值)的形式存在的。


json解析
技术:原生编码、Gson框架
方向:Java对象------>json; json------>jJava对象
具体API:
Android原生APl:
JsonObject:json对象{}
JSONObject(String json):将json字符串解析为json对象
Xxx getxxx(String name):根据name,在json对象中得到对应的Value
JsonArray:json数组[]
JSONArray(String json):将json字符串解析为json数组
int length():得到json数组中元素的个数
Xxx getXxx(int index):根据下标得到json数组中对应的元素数据
Gson框架APl:
Gson:能解析json数据的类
Gson():构造对象的方法
String tolson(Object src):将对象转换为对应格式的json字符串
Tfromlson(string json,Type typeOfT):解析Json字符串,得到对象
TypeToken<T>:用来得到Type的类
protected TypeToken():受保存的构造方法
Type getType():得到类型对象
实例代码----基于Gson
实体类代码
public class EntityStudent {
//id":1,"name":"小明","sex":"男","age":18,"height":175
private Integer id;
private String name;
private String sex;
private Integer age;
private Integer height;
set......get.....方法
@Override
public String toString() {
return "EntityStudent{" +
"id=" + id +
", name='" + name + '\'' +
", sex='" + sex + '\'' +
", age=" + age +
", height=" + height +
'}';
}
}
使用Gson将json格式的字符串转换为java对象
private void gsonTranslateJsonToJava() {
// 1. 创建Gson对象
Gson gson = new Gson();
// 2. 创建JavaBean类的对象
EntityStudent student = new EntityStudent();
// 3. 使用Gson解析:将JSON数据转为单个类实体
String json = "{\"id\":1,\"name\":\"小明\",\"sex\":\"男\",\"age\":18,\"height\":175}";
student = gson.fromJson(json, EntityStudent.class);
student.show();
}
使用Gson将json格式的字符串转换为java对象list
private void gsonTranslateJsonListToJava() {
// 1. 创建Gson对象
Gson gson = new Gson();
// 2. 创建JavaBean类的对象
EntityStudent student = new EntityStudent();
// 3. 使用Gson解析:将JSON数据转为单个类实体
String jsonString = "[{\"id\":1,\"name\":\"小明\",\"sex\":\"男\",\"age\":18,\"height\":175},{\"id\":2,\"name\":\"小红\",\"sex\":\"女\",\"age\":19,\"height\":165},{\"id\":3,\"name\":\"小强\",\"sex\":\"男\",\"age\":20,\"height\":185}]";
List<EntityStudent> list = gson.fromJson(jsonString, new TypeToken<List<EntityStudent>>() {
}.getType());
for (EntityStudent e : list) {
System.out.println(e);
}
}
使用Gson将java对象转化为json格式的字符串
private void gsonTranslateJavaToJava() {
EntityStudent student = new EntityStudent(4,"stf","男",23,178);
Gson gson = new Gson();
String s = gson.toJson(student);
System.out.println(s);
}
使用Gson将java对象list转化为json格式的字符串
private void gsonTranslateJavaListToJava() {
List<EntityStudent> list = new ArrayList<EntityStudent>();
EntityStudent student1 = new EntityStudent(4,"stf1","男",23,178);
EntityStudent student2 = new EntityStudent(5,"stf2","男",23,178);
EntityStudent student3 = new EntityStudent(6,"stf3","男",23,178);
list.add(student1);
list.add(student2);
list.add(student3);
//核心代码
String s = new Gson().toJson(list);
System.out.println(s);
}

浙公网安备 33010602011771号