JSON最常用的两种数据解析方法

JSON数据现在是我们开发中用的最多的,百分之九十的数据都是通过JSON方式进行传输,那么想要学好JSON解析就要了解什么是JSON数据,怎么快速解析它从而提升开发效率。

一、什么是JSON?

JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

  • 我们以一本书对象为例,看看在Java,JS,XML和JSON的书写区别
//Java
public class Main {
    public static void main(String[] args) {
        Person p = new Person();
        p.setName("张三");
        p.setAge(18);
        p.setSex(true);
    }
}
class Person {
    private String name;
    private int age;
    private boolean sex;


    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 boolean isSex() {
        return sex;
    }
    public void setSex(boolean sex) {
        this.sex = sex;
    }
}


//JavaScript
var b = new Object();
b.name = "张三";
b.age = 18;
b.sex = true;

//XML
<Person>
	<name>张三</name>
	<age>18</age>
	<sex></sex>
</Person>
//JSON
{
 "name":"张三",
 "age":18,
 "sex":"男"
}

JSON数据中,一个对象, 由一个大括号表示,括号中描述对象的属性,另外,在JSON格式中可以与对象互相嵌套。[元素1,元素2…]

  1. []中括号代表的是一个数组
  2. {}大括号代表的是一个对象 双引号“”表示的是属性值
  3. 冒号:代表的是前后之间的关系,冒号前面是属性的名称,后面是属性的值,这个值可以是基本数据类型,也可以是引用数据类型。

案例

{
    "reason": "查询成功",
    "result": {
        "city": "苏州",
        "realtime": {
            "temperature": "4",
            "humidity": "82",
            "info": "阴",
            "wid": "02",
            "direct": "西北风",
            "power": "3级",
            "aqi": "80"
        },
        "future": [
            {
                "date": "2019-02-22",
                "temperature": "1/7℃",
                "weather": "小雨转多云",
                "wid": {
                    "day": "07",
                    "night": "01"
                },
                "direct": "北风转西北风"
            },
            {
                "date": "2019-02-23",
                "temperature": "2/11℃",
                "weather": "多云转阴",
                "wid": {
                    "day": "01",
                    "night": "02"
                },
                "direct": "北风转东北风"
            },
            {
                "date": "2019-02-24",
                "temperature": "6/12℃",
                "weather": "多云",
                "wid": {
                    "day": "01",
                    "night": "01"
                },
                "direct": "东北风转北风"
            },
            {
                "date": "2019-02-25",
                "temperature": "5/12℃",
                "weather": "小雨转多云",
                "wid": {
                    "day": "07",
                    "night": "01"
                },
                "direct": "东北风"
            },
            {
                "date": "2019-02-26",
                "temperature": "5/11℃",
                "weather": "多云转小雨",
                "wid": {
                    "day": "01",
                    "night": "07"
                },
                "direct": "东北风"
            }
        ]
    },
    "error_code": 0
}

二、Java可以使用JSON做什么?

  • 将Java中的对象 快速的转换为 JSON格式的字符串.
  • 将JSON格式的字符串, 转换为Java的对象.

三、Gson解析

1、将对象转换为JSON字符串

转换JSON字符串的步骤:

  • 引入JAR包(点击下载

  • 在需要转换JSON字符串的位置编写如下代码即可:

String json = new Gson().toJSON(要转换的对象);
案例
import com.google.gson.Gson;

public class Demo1 {
    public static void main(String[] args) {
        //1、 创建Gson对象
        Gson g = new Gson();
        //2、 转换
        String s = g.toJson(new Person("陈思越",25,true));
        System.out.println(s);
    }
}

运行结果

{"name":"陈思越","age":25,"sex":true}
2、将JSON字符串转换为对象
  • 引入JAR包
  • 在需要转换Java对象的位置, 编写如下代码:
对象 = new Gson().fromJson(JSON字符串,对象类型.class);
案例
public class Demo2 {
    public static void main(String[] args) {
        //1、 创建Gson对象
        Gson g = new Gson();
        //2、 转换:{"name":"陈思越","age":25,"sex":true}
       Person p = g.fromJson("{\"name\":\"陈思越\",\"age\":25,\"sex\":true}",Person.class);
        System.out.println(p.getAge());
    }
}

运行结果:

25

三、FastJson解析

1、将对象转换为JSON字符串

转换JSON字符串的步骤:

  • 引入JAR包(点击下载
  • 在需要转换JSON字符串的位置编写如下代码即可:
 String json=JSON.toJSONString(要转换的对象);
案例
import com.alibaba.fastjson.JSON;

public class Demo4 {
    public static void main(String[] args) {
        Person p = new Person("梁芳瑜",25,false);
        String s = JSON.toJSONString(p);
        System.out.println(s);
    }
}

运行结果:

{"age":25,"name":"梁芳瑜","sex":false}
2、将JSON字符串转换为对象
  • 引入JAR包

  • List item在需要转换Java对象的位置, 编写如下代码:

类型 对象名=JSON.parseObject(JSON字符串, 类型.class);List<类型> list=JSON.parseArray(JSON字符串,类型.class);
案例
import com.alibaba.fastjson.JSON;

public class Demo5 {
    public static void main(String[] args) {
        //转换{"age":25,"name":"梁芳瑜","sex":false}
        Person p = JSON.parseObject("{\"age\":25,\"name\":\"梁芳瑜\",\"sex\":false}",Person.class);
        System.out.println(p.getName());
    }
}

运行结果:

梁芳瑜
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值