JSON用法总结

1. JSON是什么

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,本质就是具有特定格式的字符串,常用于客户端和服务器端交换数据。


2. JSON数据格式

  • json数组:[value1, value2, value3] ,对应Java里的数组或list

  • json对象:{key1:value1, key2:value2, key3:value3},对应Java里的Map或自定义对象

    key数据类型:字符串
    value数据类型:数值、字符串、null、json数组[]、json对象{}
    例如:[1, “ab”, [], {“n”:123, “b”:”abc”}]


3. 解析方式

3.1 Android原生API
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数组中对应的元素数据
3.2 Gson框架
Gson():构造对象的方法
    String toJson(Object src):将对象转换为对应格式的json字符串
    T fromJson(String json, Type typeOfT):解析Json字符串,得到对象
TypeToken<T>:用来得到Type的类

4. JSON字符串转换为Java对象

4.1 使用原生API
String jsonString = "{\"id\":1, \"name\":\"one\", \"grade\":100}";
// 1.将json字符串转换为JSONObject对象
JSONObject jsonObject = new JSONObject(jsonString);
// 2.根据key得到相应的value
int id = jsonObject.getInt("id");
String name = jsonObject.getString("name");
int grade = jsonObject.getInt("grade");
// 3.封装为Student对象
Student student = new Student(id, name, grade);
4.2 使用GSon
String jsonString = "{\"id\":1, \"name\":\"one\", \"grade\":100}";
Student student = new Gson().fromJson(jsonString, Student.class);

5. JSON字符串转换为Java对象的List

5.1 使用原生API
String jsonString = "[{\"id\":1, \"name\":\"one\", \"grade\":100}, {\"id\":2, \"name\":\"two\", \"grade\":99}]";
List<Student> list = new ArrayList<Student>();
// 1.将json字符串转换为JSONArray对象
JSONArray jsonArray = new JSONArray(jsonString);
// 2.遍历JSONArray对象所有元素,将每个元素封装为Student对象
for(int i = 0; i < jsonArray.length(); i++){
    JSONObject jsonObject = jsonArray.getJSONObject(i);
    // 3.根据key得到相应的value
    int id = jsonObject.getInt("id");
    String name = jsonObject.getString("name");
    int grade = jsonObject.getInt("grade");
    // 4.封装为Student对象
    Student student = new Student(id, name, grade);
    // 5.添加到List中
    list.add(student);
}
5.2 使用Gson
String jsonString = "[{\"id\":1, \"name\":\"one\", \"grade\":100}, {\"id\":2, \"name\":\"two\", \"grade\":99}]";
List<Student> list = new Gson().fromJson(jsonString, new TypeToken<List<Student>>(){}.getType());

6.使用Gson将Java对象转换为json字符串{}

Student student = new Student(1,"one",100);
String jsonString = new Gson().toJson(student);

7.使用Gson将Java对象的List转换为json字符串[]

List<Student> list = new ArrayList<Student>();
list.add(new Student(1,"one",100));
list.add(new Student(2,"two",99));
String jsonString = new Gson().toJson(list);

8.使用Map封装json对象key的特殊情况

当一些json字符串中的对象属性名很特殊,如包含空格或仅为数字时,不能直接将json字符串转换为Java对象,而是要将其转换为Map:

String jsonString = "{\"my id\":1, \"my name\":\"one\", \"my grade\":100}";
    Map<String, Object> map = new Gson().fromJSon(jsonString, new TypeToken<Map<String, Object>>(){}.getType());

注明:博客整理自网络视频
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值