一、json介绍

       JSON 是一种轻量级易与解析的数据格式,它按照 js 的对象和数组的字面量格式来书写。

       XML 格式数据极其的冗长。因为每个离散的数据片段需要大量的 XML 结构,所以有效的数据的比例非常低。XML 语法还有轻微的模糊。还有,解析 XML 是非常占程序员的精力的。你需要提前了解详细的结构和确切地知道如何解开这个结构,然后细心地将他们写入 js 对象中。

二、json是什么

      JSON:JavaScript 对象表示法(JavaScript Object Notation), 一种轻量级的数据交换格式,易于人阅读和编写,也易于机器解析和生成。用来描述数据结构,它是基于纯文本的数据格式,是一种轻量级的数据交换格式。广泛应用于服务端与客户端的数据交互。
  JSON 是存储和交换文本信息的语法,类似 XML。
  JSON 采用完全独立于语言的文本格式,也使用了类似于 C 语言家族的习惯(包括 C, C++, C#,Java, JavaScript, Perl, Python…)这些特性使 JSON 成为理想的数据交换语言。
  JSON 是一个新的人类可读(human readable)的数据格式,在过去几年中已变得非常受欢迎,尤其是在 web 开发中。

 

三、语法格式(具体如下: http://www.json.org/)

  jquery 1.4 以后对 json 格式变严格了,也就是说必须要这种格式的{"键":"值","键":"值 "};像原来
的{键:值,键:值}和{'键':'值','键':'值'}这种都是错误的,不合标准,所以 jquery 返回 error 如"
{"success":true,"msg":"success"}",如果说是 boolean 类型,则不用加引号,其它的键/值都需要加引
号。

       Json 以 key-value 的形式存储数据
       Key 的取值 为 String 类型;
       Value 的取值为 String,boolean,Number,数组,Object,null;
       Json 串以{开始,以}结尾;
       Json 串中数组是以[开始,以]结尾;
      Json 串中Object是以{开始,以}结尾;

代码示例:

1、基本类型

{
  "name": "张三",
  "age": 18,
  "sex": true
}

2、数组类型

[
 {
    "name": "张三",
    "age": 18,
    "sex": true
 },
 {
    "name": "李四",
    "age": 19,
    "sex": false
 }
]

3、对象嵌套

{
  "name": "teacher",
  "computer": {
  "CPU":"intel7,
  "disk": "512G"
},
"students": [
   {
      "name": "张三",
      "age": 18,
      "sex": true
   },
   {
      "name": "李四",
      "age": 19,
      "sex": false
   }
 ]
}

四、解析方式

1、使用GSON处理

 首先需要下载jar包

下载网址:https://mvnrepository.com,然后搜索gson

android json 动画查看工具_User

android json 动画查看工具_User_02


  

a、user对象转json字符串

//1.创建对象
User user = new User("小蔡","西马杭",true);
//2.创建Gson对象
Gson gson = new Gson();
//3.将user转换为json字符串
String json = gson.toJson(user);

b、json字符串转user对象

//1.创建json对象
String json01 = "{\"name\":\"小蔡\",\"address\":\"西马杭\",\"sex\":true}";
//2.创建Gson对象
Gson gson01 = new Gson();
//3.将json字符串转换为user对象
User user01 = gson01.fromJson(json01,User.class);
System.out.println(user01);

c、List对象转json字符串

//1.创建List<User>集合
List<User> userList = new ArrayList<>();
//2.创建User 添加userList中
userList.add(new User("小蔡大哥","西马杭",true));
userList.add(new User("辣条哥","沟",true));
//3创建gson对象
Gson gson = new Gson();
//4.将list对象转换为json字符串
String json = gson.toJson(userList);
System.out.println(json);

d、json字符串转List对象

//1.创建json字符串
String json01 = "[{\"name\":\"小蔡大哥\",\"address\":\"西马杭\",\"sex\":true},{\"name\":\"辣条哥\",\"address\":\"沟\",\"sex\":true}]";
//2.创建gson对象
Gson gson01 = new Gson();
//3.json转List
List<User> userList01 = gson01.fromJson(json01, new TypeToken<List<User>>(){}.getType());
//遍历user
for(User user : userList01) {
	System.out.println(user);
}

e、Map对象转json字符串

//1、创建Map集合
Map<String,Object> map = new HashMap<>();
map.put("id","008");
map.put("user",new User("小蔡大哥","西马坑",true));
//2、创建Gson对象
Gson gson = new Gson();
//Map转json
String json = gson.toJson(map);
System.out.println(json);

f、json字符串转Map对象

//1.创建json字符串
String json01 = "{\"jd\":\"008\",\"user\":{\"name\":\"小蔡大哥\",\"address\":\"西马杭\",\"sex\":true}}";
//2.创建Gson对象
Gson gson01 = new Gson();
//3.json转map
Map<String,Object> map01 = gson01.fromJson(json01,new TypeToken<Map<String,Object>>(){}.getType());
for(String key:map01.keySet()) {
	System.out.println(key+":"+map01.get(key));
}