JSON解析

JSON解析

简介:

JSON: JavaScript Object Notation JS对象简谱 , 是⼀种轻量级的数据交换格式.

优点

易于人的阅读和编写,易于程序解析与生产。

格式

对象格式

一个对象, 由一个大括号表示.

  {
    "属性1": "属性1的值",
    "属性2": "属性2的值",
    "属性3": "属性3的值"
    }

括号中描述对象的属性 ,通过键值对来描述对象的属性 (可以理解为, 大括号中, 包含的是一个个的键值对.)
格式:

键与值之间使用冒号连接, 多个键值对之间使用逗号分隔,键值对的键应使用引号引住 (通常Java解析时, 键不使用引号会报错. 而JS能正确 解析)

注意:键值对的值, 可以是JS中的任意类型的数据

数组格式

[元素1,元素2…]

注意:在JSON格式中可以与对象互相嵌套

  {
    "schoolName": "xxx",
    "schoolLoaction": "xxxxx",
    "schoolStudents": ["张三","李四","王五"]
    }

Java解析JSON的方式

Gson方式

引入jar包:
在这里插入图片描述
或引入依赖:

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.8.6</version>
</dependency>
FastJson方式

引入jar包:
在这里插入图片描述
或引入依赖:

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.66</version>
</dependency>
将对象转换为json字符串
/**职员类*/
public class Employee {
    private String name;//姓名
    private int age;//年龄
    private String department;//部门
    public Employee(String name,int age,String department){
    this.name=name;
    this.age=age;
    this.department=department;
}
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 getDepartment() {
    return department;
}
public void setDepartment(String department) {
    this.department = department;
}
@Override
public String toString() {
    return "Employee{" +
            "name='" + name + '\'' +
            ", age=" + age +
            ", department='" + department + '\'' +
            '}';
}
}

1、Gson

public static void main(String[] args) {
    //1.创建Gson对象
    Gson g = new Gson();
    //2.转换
    Employee e = new Employee ("张三",20,"法务部");
    String s = g.toJson(e);
    System.out.println(s);
}
 * 结果:
 * {"name":"张三","age":20,"department":"法务部"}
 * */

2、FastJson

public static void main(String[] args) {
    Employee e = new Employee ("张三",20,"法务部");
    //转换
    String json = JSON.toJSONString(e);
    System.out.println(json);
}
/**
 * 结果:
 * {"age":20,"department":"法务部","name":"张三"}
 * */
将json字符串转换为对象

1、Gson

public static void main(String[] args) {
    //1.创建Gson对象
    Gson g = new Gson();
    //2.转换  :  {"name":"张三","age":20,"department":"法务部"}
    Employee e = g.fromJson("{\"name\":\"张三\",\"age\":20,\"department\":\"法务部\"}", Employee.class);
    System.out.println(e.getName());
    System.out.println(e.getAge());
    System.out.println(e.getDepartment());
}
/**
 * 结果:
 * 张三
 * 20
 * 法务部
 * */

2、FastJson

public static void main(String[] args) {
    //1.转换  : {"name":"张三","age":20,"department":"法务部"}
    Employee e = JSON.parseObject("{\"name\":\"张三\",\"age\":20,\"department\":\"法务部\"}", Employee.class);
    System.out.println(e.getName());
    System.out.println(e.getAge());
    System.out.println(e.getDepartment());
}
/**
 * 结果:
 * 张三
 * 20
 * 法务部
 * */

数组转换

    Employee e1 = new Employee("张三",17,"法务部");
    Employee e2 = new Employee("李四",20,"技术部");
    Employee e3 = new Employee("王五",23,"人力部");
    Employee[] es = {e1,e2,e3};
    //将对象数组转为json
    String s = JSON.toJSONString(es);
    System.out.println(s);
    //将json转换为对象列表
    List<Employee> list = JSON.parseArray(s, Employee.class);
    for (Employee employee : list) {
        System.out.println(employee);
    }
}
/**
 * 结果:
 * [{"age":17,"department":"法务部","name":"张三"},{"age":20,"department":"技术部","name":"李四"},{"age":23,"department":"人力部","name":"王五"}]
 * Employee{name='张三', age=17, department='法务部'}
 * Employee{name='李四', age=20, department='技术部'}
 * Employee{name='王五', age=23, department='人力部'}
 * */
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值