先报答案,常用的就两种(都需要导入Jar包):

1、GSON解析。

2、FastJson解析。

GSON解析

这是google开源的一种解析方式,在idea使用之前需要导入jar包,可以直接去GitHub上下载。

使用方法

Object——>JsonString

1、创建一个类的对象。

2、创建一个Gson对象

2、使用Gson中的toJson方法

json.net 完全解析 json怎么解析_JSON

 JsonString——>Object

1、创建一个Gson对象

2、使用fromJson方法,fromJson(String,类.class)

json.net 完全解析 json怎么解析_java-ee_02

 注意事项:

1、Json实际上就是键值对的集合,所以可以转换为Map集合

2、如果Json键值对中的值是数组,在转换时类型会变成List

3、因为Book在创建时就已经确定了属性都是String,所以验证List的时候直接在Json字符串后面添加了一个page的属性,这个字符串已经不能转换为Book类型了。

源码

import com.google.gson.Gson;

import java.util.List;
import java.util.Map;

/**
 * 使用GSON解析JSON
 */
public class Demo_GSON {
    public static void main(String[] args) {
        //创建一个Book的对象
        Book book = new Book("1001","三体","三体人和地球人之间的战争。");
        //创建Gson对象
        Gson gson = new Gson();
        //将对象转化为JSON字符串
        String json = gson.toJson(book);
        System.out.println(json);
        //1、将JSON字符串转换为对象
        Book book2 = gson.fromJson(json,Book.class);
        System.out.println(book2.getName());
        //2、将JSON字符串转变为Map对象
        Map<String,String> map = gson.fromJson(json,Map.class);
        System.out.println(map.get("info"));
        //3、如果Map的值是数组,会直接转变为List
        //数组:["三体人","地球人","打仗"]
        //{"id":"1001","name":"三体","info":"三体人和地球人之间的战争。","page":["三体人","地球人","打仗"]}
        String json3 = "{\"id\":\"1001\",\"name\":\"三体\",\"info\":\"三体人和地球人之间的战争。\",\"page\":[\"三体人\",\"地球人\",\"打仗\"]}";
        Map map1 = gson.fromJson(json3, Map.class);
        List<String> list =(List) map1.get("page");
        System.out.println(list.get(1)+list.get(2));
    }
}

FastJson

这是国内常用的阿里开源的一款json解析方式,当然,它也需要导入jar包

使用方法

Object——>JsonString

不需要创建对象,直接JSON.toJSONString();就可以了。

 

json.net 完全解析 json怎么解析_JSON_03

 JsonString——>Object

1、转换为对象:parseObject。

json.net 完全解析 json怎么解析_jar_04

 2、转化为数组:parseArray(可以理解为解析成Map集合后,其中的一个值也能使用JSON的方法,对应Gson中的get和强制转换)

json.net 完全解析 json怎么解析_java-ee_05

 源码

import com.alibaba.fastjson.JSON;;

import java.util.List;

public class Demo_FastJson {
    public static void main(String[] args) {
        //创建一个Book的对象
        Book book = new Book("1001","三体","三体人和地球人之间的战争。");
        //直接解析为JSON字符串
        String json = JSON.toJSONString(book);
        System.out.println(json);
        //将JSON字符串转化为对象
        Book book2 = JSON.parseObject(json,Book.class);
        System.out.println(book2.getId());
        //将JSON字符串中的数组转换为Array:["一二三","四五六","七八"]
        List<String> list = JSON.parseArray("[\"一二三\",\"四五六\",\"七八\"]", String.class);
        System.out.println(list.get(1));
    }
}