json解析教程

JSON格式

首先JSON是由一个大括号加多个键值对组成,同时值中还可以添加数组格式的内容或是新的大括号

数组格式: 在JSON中可以与对象互相嵌套 [元素1,元素2…]

一个对象, 由一个大括号表示.
   括号中 描述对象的属性 . 通过键值对来描述对象的属性
   (可以理解为, 大括号中, 包含的是一个个的键值对.)
格式:
	键与值之间使用冒号连接, 多个键值对之间使用逗号分隔.
	键值对的键 应使用引号引住 (通常Java解析时, 键不使用引号会报错. 而JS能正确解析.)
	键值对的值, 可以是JS中的任意类型的数据

如:

{
        "name":"我是你爸爸",
        "age":18,
        "paoyou":["张三","李四","王二","麻子",{
              "name":"野马老师",
              "info":"像匹野马一样狂奔在技术钻研的道路上"
         }],
        "heihei":{
          "name":"大长刀",
          "length":"40m"
   		}
}

这里面就是最外面大括号,然后键值对,值中还可以进行 数组 或是 大括号 的添加(数组中的一般都是值,大括号里的都是键值对

将JSON字符串转化为对象

我们先编写一个Book类,其中包含id,name,info属性

再定义一个json字符串:

{
    "name":"大哥大",
    "id":"11",
    "info":"我没有大哥大"
}

再通过两种方式进行转化

有两种转换的jar包:

GSON,Fastjson

GSON

1、在操作前我们需要引入使用GSON的jar包

2、在java编译器中输入进行如下操作,此时返回的就会是对象了

类型 对象 = new Gson().fromJson(JSON字符串,对象类型.class);

案例(通过字符流转化为字符串再转化为对象):

File file = new File("demo1.json");
//获取字节输入流
FileInputStream fis = new FileInputStream(file);
//先获取流中字节的长度
int length = fis.available();
//定义一个数组
byte[] b = new byte[length];
//将流读取并添加到这个数组中
fis.read(b);
fis.close();
//直接将这个数组放入String中读取并返回
String s = new String(b);
//先创建GSON对象来使用通过s来获取对象的方法
Gson g = new Gson();
//通过fromJson获取对象
Book book = g.fromJson(s, Book.class);
System.out.println(book);

在这里插入图片描述

FastJson

1、在操作前我们需要引入使用FastJson的jar包

2、在java编译器中输入进行如下操作,此时返回的就会是对象了

类型  对象名 = JSON.parseObject(JSON字符串, 类型.class);
或
List<类型> list=JSON.parseArray(JSON字符串,类型.class);

案例(除了转换的方式其他的都是一样的):

Book book = JSON.parseObject(s, Book.class);
System.out.println(book);

在这里插入图片描述

将对象为转化JSON字符串

有两种转换的jar包:

GSON,FastJson

GSON

1、在操作前我们需要引入使用GSON的jar包

2、在java编译器中输入进行如下操作,此时返回的就会是json字符串了

String json=new Gson().toJSON(要转换的对象);

案例

 //将之前的对象直接转化为json字符串
String json = new Gson().toJson(book);
System.out.println(json);

在这里插入图片描述

FastJson

1、在操作前我们需要引入使用FastJson的jar包

2、在java编译器中输入进行如下操作,此时返回的就会是json字符串了

//将之前的对象直接转化为json字符串
String s1 = JSON.toJSONString(book);
System.out.println(s1);

在这里插入图片描述

两者的区别

同:首先这两个都需要导入jar包

不同:

GSON需要先new一个对象再进行操作

FastJson只需要直接JSON.方法即可

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值