java菜鸟|JSON小结

json小结

JSON小结

JSON简介

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

不同语言的对象格式

一本书
	书名
	简介

java

java
class Book{
	private String name;
	private String info;
	get/set...
}
Book b = new Book();
b.setName(“金苹果”);
b.setInfo(“种苹果”);
...
js:
var b = new Object();
b.name = "金苹果";
b.info = "种苹果";
XML:
<book>
	<name>金苹果</name>
	<info>种苹果</info>
</book>
JSON:
{
	"name":"金苹果",
	"info":"种苹果"
}

数组格式

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

{
	"id":"100",
	"name":"金苹果",
	"info":"种植苹果真辛苦",
	"page":["锄禾日当午","汗滴禾下土","嘿嘿嘿"]
}

Java与JSON

做什么?

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

Gson

将对象转换为JSON字符串

转换JSON字符串的步骤:
1. 引入JAR包
2. 在需要转换JSON字符串的位置编写如下代码即可:
	String json = new Gson().toJSON(要转换的对象);

完整代码

import com.google.gson.Gson;

public class Demo2 {
    public static void main(String[] args) {
     //1 . 创建gson对象
     Gson g = new Gson();
     //2 . 转换
     Book b = new Book("100","金苹果","种植苹果真辛苦");
     String s = g.toJson(b);
     System.out.println(s);
     }
}

运行结果
java菜鸟|JSON小结
由于gson对象创建完后只是用了一次,所以也可以这样写

import com.google.gson.Gson;

public class Demo2 {
    public static void main(String[] args) {
    Book b = new Book("100","金苹果","种植苹果真辛苦");
    String s = new Gson().toJson(b);
    System.out.println(s);
    }
}

运行结果相同

将JSON字符串转换为对象

1. 引入JAR包
2. 在需要转换Java对象的位置, 编写如下代码:
	对象 = new Gson().fromJson(JSON字符串,对象类型.class);

实例代码如下

import com.google.gson.Gson;

public class Demo1 {
    public static void main(String[] args) {
    	//1 . 创建gson对象
        Gson g = new Gson();
        //2 . 转换{"id":"100","name":"金苹果","info":"种植苹果真辛苦"}
        Book b= g.fromJson("{\"id\":\"100\",\"name\":\"金苹果\",\"info\":\"种植苹果真辛苦\"}",Book.class);
        System.out.println(b.getId());
    }
}

和上一个示例相同,Gson对象只使用一次
优化代码为:

import com.google.gson.Gson;

public class Demo1 {
    public static void main(String[] args) {
    	Book b= new Gson().fromJson("{\"id\":\"100\",\"name\":\"金苹果\",\"info\":\"种植苹果真辛苦\"}",Book.class);
        System.out.println(b);
        System.out.println(b.getId());
        System.out.println(b.getName());
        System.out.println(b.getInfo());
    }
}

运行结果为
java菜鸟|JSON小结
同样json格式里有数组也可转换,可将其转换为HashMap,转成集合

import com.google.gson.Gson;

import java.util.HashMap;
import java.util.List;

public class Demo3 {
    public static void main(String[] args) {
        //  1 . 创建gson对象
        Gson g = new Gson();
        //2 . 转换{"id":"100","name":"金苹果","info":"种植苹果真辛苦","page":["锄禾日当午","汗滴禾下土","嘿嘿嘿"]}
        HashMap data = g.fromJson("{\"id\":\"100\",\"name\":\"金苹果\",\"info\":\"种植苹果真辛苦\",\"page\":[\"锄禾日当午\",\"汗滴禾下土\",\"嘿嘿嘿\"]}", HashMap.class);
        List page = (List) data.get("page");
        System.out.println(page.get(1));//把数组转成ArrayList
    }
}

运行结果
提取page中下标为1的元素
java菜鸟|JSON小结

fastjson

将对象转换为JSON字符串

转换JSON字符串的步骤:
	1. 引入JAR包
	2. 在需要转换JSON字符串的位置编写如下代码即可:
		String json=JSON.toJSONString(要转换的对象);

代码示例

import com.alibaba.fastjson.JSON;

public class Demo4 {
    public static void main(String[] args) {
        Book book = new Book("1002","唐诗三百首","窗前明月光");
        // 1 . 转换
        String json = JSON.toJSONString(book);
        System.out.println(json);
    }
}

运行结果
java菜鸟|JSON小结

将JSON字符串转换为对象

1. 引入JAR包
2. 在需要转换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) {
        //1. 转换 : {"id":"1002","info":"窗前明月光","name":"唐诗三百首"}
        Book book = JSON.parseObject("{\"id\":\"1002\",\"info\":\"窗前明月光\",\"name\":\"唐诗三百首\"}",Book.class);
        System.out.println(book);
    }
}

运行结果
java菜鸟|JSON小结
数组也可

import com.alibaba.fastjson.JSON;

import java.util.List;

public class Demo6 {
    public static void main(String[] args) {
        //1. 转换 : ["一二三","二三四","三四五"]
        List<String> strings = JSON.parseArray("[\"一二三\",\"二三四\",\"三四五\"]",String.class);
        System.out.println(strings.get(1));
    }
}

java菜鸟|JSON小结

上一篇:【安卓爬虫JAVA版-1】在android studio 之中使用json数据格式


下一篇:Gson序列化LinkedHashMap.Entry失败的探索