简介:
JSON: JavaScript Object Notation JS对象简谱 , 是一种轻量级的数据交换格式.
提示:以下是本篇文章正文内容,下面案例可供参考
首先简单的描述一下JAVA中的对象格式:
//一本书书名简介
javaclass Book{
private String name;
private String info;
get/set...
}
//案例:
Book b = new Book();
b.setName(“金苹果”);
b.setInfo(“种苹果”);
...
接下来描述一下JSON的文本格式:
一个对象, 由一个大括号表示.。
括号中描述对象的属性 ,通过键值对来描述对象的属性 (可以理解为, 大括号中, 包含的是一个个的键值对。)
格式:键与值之间使用冒号(:)连接, 多个键值对之间使用逗号分隔,键值对的键应使用引号引住 (通常Java解析时, 键不使用引号会报错. 而JS能正确解析) 键值对的值,,可以是JS中的任意类型的数据。
代码如下(示例):
{
"name":"金苹果",
"info":"种苹果"
}
代码如下(示例):
//在JSON格式中可以与对象相嵌套,即元素可以为对象,如:[{},{}...],对象中也可以包含数组,如:{[],[]...}
[元素1,元素2...]
{
"name":"齐天大圣",
"age":999,
"pengyou":["沙悟净",
"八戒",
"天蓬元帅",
"悟能",
{ "name":"野马老师", "info":"像匹野马一样狂奔在技术钻研的道路上" }
],
"heihei":{ "name":"大长刀",
"length":"40m" }
}
该案例就是一个JSON字符串格式,其中该对象里面的属性可以是对象也可以是数组(例如:“pengyou”这个属性),数组里的元素可以对象(如:{ “name”:“野马老师”, “info”:“像匹野马一样狂奔在技术钻研的道路上” })。
注释:下面的转换的Book类均为该类:
package com.java.jison;
import java.util.Objects;
public class Book {
//定义两个变量,书名和简介
private String name;
private String info;
public Book() {
}
public Book(String name, String info) {
this.name = name;
this.info = info;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
@Override
public String toString() {
return "Book{" +
"name='" + name + '\'' +
", info='" + info + '\'' +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Book book = (Book) o;
return name.equals(book.name) &&
info.equals(book.info);
}
@Override
public int hashCode() {
return Objects.hash(name, info);
}
}
转换JSON字符串的步骤:
1. 引入JAR包
2. 在需要转换JSON字符串的位置编写如下代码即可:
String json = new Gson().toJSON(要转换的对象);
package com.java.jison;
import com.google.gson.Gson;
/**
* 运用Gson实现对象转换为Json字符串的转换
*/
public class Demo1 {
public static void main(String[] args) {
//创建Gson对象
Gson gson = new Gson();
Book b = new Book("金苹果","种苹果真辛苦!");
//调用toJson将对象转换为json文件格式
String s = gson.toJson(b);
System.out.println(s);//输出:{"name":"金苹果","info":"种苹果真辛苦!"}
}
}
转换JSON字符串的步骤:
1. 引入JAR包
2. 在需要转换JSON字符串的位置编写如下代码即可:
类名 对象名 = new Gson().fromJson(要转换的Jason字符串);
注:在转换时,Jason字符串与对象类型一定要匹配
package com.java.jison;
import com.google.gson.Gson;
/**
* 运用Gson调用fromJson将Json字符串转换对象
*/
public class Demo3 {
public static void main(String[] args) {
//{"name":"金苹果","info":"种苹果真辛苦!"}
//调用fromJson将Gson文件转换为匹配的对象
Gson gson = new Gson();
Book book = gson.fromJson("{\"name\":\"金苹果\",\"info\":\"种苹果真辛苦!\"}", Book.class);
System.out.println(book.getName());//输出:金苹果
}
}
import com.google.gson.Gson;
import java.util.HashMap;
import java.util.List;
/**
* 当文件类型为未知类时,可以运用gson对象调用fromJson将其转换为Map集合类
*/
public class Demo4 {
public static void main(String[] args) {
//{"name":"金苹果","info":"种苹果真辛苦!","数组":["你叉叉","穷哈哈","骑着扫帚飞"]}
//若是该Gson文件是未知类,则可以将它转换成Map集合进行有效数据的筛选
Gson gson = new Gson();
HashMap hashMap = gson.fromJson("{\"name\":\"金苹果\",\"info\":\"种苹果真辛苦!\",\"数组\":[\"你叉叉\",\"穷哈哈\",\"骑着扫帚飞\"]}", HashMap.class);
//数组的类型为ArrayList类
System.out.println( hashMap.get("数组").getClass());//输出:class java.util.ArrayList
//将数组强转为List类并且取出它的第一个元素
List list = (List) hashMap.get("数组");
System.out.println(list.get(1));//输出:穷哈哈
}
}
import com.alibaba.fastjson.JSON;
/**
* 运用fastjson进行对象转换到JSON字符串
*/
public class Demo2 {
public static void main(String[] args) {
Book b = new Book("唐诗三百首","这本书里面有三百首唐诗");
//调用toJSONString()将对象转换成JSON字符串
String s = JSON.toJSONString(b);
System.out.println(s);
}
}
import com.alibaba.fastjson.JSON;
/**
* 运用fastjason将JASON字符串转换为对象
*/
public class Demo5 {
public static void main(String[] args) {
//{"info":"这本书里面有三百首唐诗","name":"唐诗三百首"}
//调用parseObject()方法将Json文件转换为对应的对象
Book book = JSON.parseObject("{\"info\":\"这本书里面有三百首唐诗\",\"name\":\"唐诗三百首\"}", Book.class);
System.out.println(book.getName());//输出:唐诗三百首
}
}
import com.alibaba.fastjson.JSON;
import java.util.List;
/**
* 运用fastjason将数组转换为String类型的List集合
*/
public class Demo6 {
public static void main(String[] args) {
//["嘿嘿","俺","老","孙","来","也"]
//将数组转换成String类型的数组
List<String> strings = JSON.parseArray("[\"嘿嘿\",\"俺\",\"老\",\"孙\",\"来\",\"也\"]", String.class);
System.out.println(strings.get(1));//输出:俺
}
}
本文主要介绍了JASON的两种解析方式:Gson和fastjason。无论使用哪一种方式,我们一定要及时更新jar包避免bug的发生。以上就是我个人对于JASON解析的学习总结,要是对大家有些许帮助便值当,请各路大佬批评指正!