Java基础-JSON解析

Posted Ocean:)

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java基础-JSON解析相关的知识,希望对你有一定的参考价值。

JSON

JSON格式概述

javascript Object Notation

JSON 数据格式与语言无关。即便它源自JavaScript,但目前很多编程语言都支持 JSON 格式数据的生成和解析。JSON 的官方 MIME 类型是 application/json,文件扩展名是 .json

数据格式

JSON对象

{
    "ID":1,
    "name":"ocean",
    "age":20
}

特征:

  • 数据形式键值对形式

    “键”:值

  • 数据支持 字符串,数字,布尔值

  • {} 大括号以内的数据

JSON对象数组

[
    {
    	"ID":1,
    	"name":"ocean",
    	"age":20
	},
	{
    	"ID":2,
    	"name":"ocean",
    	"age":20
	},
	{
    	"ID":3,
    	"name":"jack",
    	"age":22
	}
]

特征:

  • 数据格式使用 [] 包含
  • [] 里都是JSON格式对象
  • 每一个对象之间使用逗号隔开,最后一个元素不需要逗号

JSON数据验证

网站:https://www.bejson.com/

JSON解析工具

  • Gson
  • fastjson
  • jackson

都是第三方工具,需要导入对应的jar包使用

fastjson导入

  1. 在项目下新建 lib 文件夹,将 fastjson 的 jar 包导入

  2. 点击idea右上角齿轮齿轮选择project structure

    导入jar包

Fastjson内容

JSON核心类

json核心类提供解析和转化方法,用于解析json数据格式,同时用于转换类对象到json格式,该类对象需要符合JavaBean规范

  • JSONArray

    提供按照键值对方式解析获取数据的方法,同时存在Listfangfa

  • JSONObject

    提供获取对应的类对象,指定键值对对应数据的方法

解析实例

package cn.ocean888.a_json;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

import java.util.ArrayList;
import java.util.List;

/**
 * fastjson使用
 */
public class Demo1 {
    public static void main(String[] args) {
        ArrayList<Student> list = new ArrayList<>();
        Student stu = new Student("oooo", 10);
        list.add(new Student("ocean", 28));
        list.add(new Student("ocean1", 18));
        list.add(new Student("ocean2", 19));

        /*
        JavaBean List ==> json String
         */
        String s = JSON.toJSONString(list);
        System.out.println(s);
        System.out.println("===============================");


        /*
        JavaBean Student类对象 ==> Json String
         */
        String s1 = JSON.toJSONString(stu);
        System.out.println(s1);

        /*
        Json String ==> Java Bean Student
         */
        Student student = JSON.parseObject(s1, Student.class);
        System.out.println(student);

        /*
        Json String ==> Json Object
         */
        JSONObject jsonObject = JSON.parseObject(s1);
        String name = jsonObject.getString("name");
        System.out.println(name);
        System.out.println(jsonObject.getInteger("age"));

        /*
        Json String ==> JsonArray
         */
        JSONArray objects = JSON.parseArray(s);
        System.out.println(objects);
        for (Object object : objects) {
            JSONObject jsonObject1 = (JSONObject) object;
            System.out.println(jsonObject1.getString("name"));
            System.out.println(jsonObject1.getInteger("age"));
        }
        Student object = objects.getObject(2, Student.class);
        System.out.println(object);
        System.out.println("==============================");

        /*
        JSONArray ==> JavaBean List集合
         */
        List<Student> students = objects.toJavaList(Student.class);
        for (Student student1 : students) {
            System.out.println(student1);
        }

        /*
        StudentManager ==> ArrayList ==> JSONString ==> 文件
        文件 ==> 程序 ==> JSONString ==> JSONArray ==> ArrayList
         */
    }
}

输出:

以上是关于Java基础-JSON解析的主要内容,如果未能解决你的问题,请参考以下文章

片段中的 JSON 解析 [关闭]

片段(Java) | 机试题+算法思路+考点+代码解析 2023

java中把json怎么转换成数组?

Java基础-JSON解析

Gson全解析(上)-Gson基础

解析:JSON 文本没有以数组或对象开头,并且允许未设置片段的选项