fastjson的使用——JSON字符串、JSON对象、Java对象的互转

摘要:
一、fastjson简介fastjson是阿里出品的处理JSON字符串的Java类库,可以对JSON字符串、JSON对象、Java对象进行互相转换源码地址:https://github.com/alibaba/fastjson二、依赖引用如果使用的是maven,需要在pom.xml文件中加入依赖:com.alibaba˂artifact
一、fastjson简介

fastjson是阿里出品的处理JSON字符串的Java类库,可以对JSON字符串、JSON对象、Java对象进行互相转换
源码地址:
https://github.com/alibaba/fastjson

二、依赖引用

如果使用的是maven,需要在pom.xml文件中加入依赖:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.78</version>
</dependency>

如果使用的是gradle,需要在gradle.build文件中加入依赖:
implementation("com.alibaba:fastjson:1.2.78")

三、常用API

字符串转成JSON对象/数组
字符串转成JSON对象
JSON.parseObject(String text)
JSON.parse(String text)

字符串转成JSON数组
JSON.parseArray(String text)
JSON.parse(String text)

字符串转成Java对象/列表
字符串转成Java对象
JSON.parseObject(String text, Class<T> clazz)

字符串转成Java对象列表
JSON.parseArray(String text, Class<T> clazz)

Java对象/列表转成JSON对象/数组
Java对象转成JSON对象
JSONObject.toJSON(Object javaObject)
JSON.toJSON(Object javaObject)

Java对象列表转成JSON数组
JSONArray.toJSON(Object javaObject)
JSON.toJSON(Object javaObject)

JSON对象/数组转成Java对象/列表
JSON对象转成Java对象
JSON.toJavaObject(JSON json, Class<T> clazz)
jsonObject.toJavaObject(JSON json) (非静态方法)

JSON数组转成Java对象列表
jsonArray.toJavaList(Class<T> clazz) (非静态方法)

用两张图可以看的更清楚:

思维导图:

fastjson的使用——JSON字符串、JSON对象、Java对象的互转第1张

转换图:

fastjson的使用——JSON字符串、JSON对象、Java对象的互转第2张

四、示例代码
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import java.util.List;

public class FastJSONLearning {
  public static void main(String[] args) {
    String jsonObjectStr = "{"prop":"code","label":"代码","required":true,"key":true}";
    String jsonArrayStr = "[{"prop":"code","label":"代码","required":true,"key":true},{"prop":"explain","label":"中文释义","required":true}]";

    // 字符串转成JSON对象/数组
    // 字符串转成JSON对象
    // 方法1
    JSONObject jsonObject1 = JSON.parseObject(jsonObjectStr);
    System.out.println("字符串转成JSON对象: " + jsonObject1);

    // 方法2
    JSONObject jsonObject2 = (JSONObject) JSON.parse(jsonObjectStr);
    System.out.println("字符串转成JSON对象: " + jsonObject2);

    // 字符串转成JSON数组
    // 方法1
    JSONArray jsonArray1 = JSON.parseArray(jsonArrayStr);
    System.out.println("字符串转成JSON数组: " + jsonArray1);

    // 方法2
    JSONArray jsonArray2 = (JSONArray) JSON.parse(jsonArrayStr);
    System.out.println("字符串转成JSON数组: " + jsonArray2);

    // 字符串转成Java对象/列表
    // 字符串转成Java对象
    Dict dict = JSON.parseObject(jsonObjectStr, Dict.class);
    System.out.println("字符串转成Java对象: " + dict.toString());

    // 字符串转成Java对象列表
    List<Dict> dictList = JSON.parseArray(jsonArrayStr, Dict.class);
    System.out.println("字符串转成Java对象列表: " + dictList.toString());

    // Java对象/列表转成JSON对象/数组
    // Java对象转成JSON对象
    // 方法1
    JSONObject jsonObject3 = (JSONObject) JSONObject.toJSON(dict);
    System.out.println("Java对象转成JSON对象: " + jsonObject3.toJSONString());

    // 方法2
    JSONObject jsonObject4 = (JSONObject) JSON.toJSON(dict);
    System.out.println("Java对象转成JSON对象: " + jsonObject4.toJSONString());

    // Java对象列表转成JSON数组
    // 方法1
    JSONArray jsonArray3 = (JSONArray) JSONArray.toJSON(dictList);
    System.out.println("Java对象列表转成JSON数组: " + jsonArray3.toJSONString());

    // 方法2
    JSONArray jsonArray4 = (JSONArray) JSON.toJSON(dictList);
    System.out.println("Java对象列表转成JSON数组: " + jsonArray4.toJSONString());

    // JSON对象/数组转成Java对象/列表
    // JSON对象转成Java对象
    // 方法1
    Dict dict1 = JSON.toJavaObject(jsonObject1, Dict.class);
    System.out.println("JSON对象转成Java对象: " + dict1);

    // JSON对象转成Java对象
    // 方法2
    Dict dict2 = jsonObject1.toJavaObject(Dict.class);
    System.out.println("JSON对象转成Java对象: " + dict2);

    // JSON数组转成Java对象列表
    List<Dict> dictList1 = jsonArray1.toJavaList(Dict.class);
    System.out.println("JSON数组转成Java对象列表: " + dictList1);
  }
}

免责声明:文章转载自《fastjson的使用——JSON字符串、JSON对象、Java对象的互转》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Unity3D音频播放器 动态装载组件谈谈Linux下的数据流重定向和管道命令下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

URL与String转换

NSString *str = @"www.baidu.com"; NSURL *URL = [NSURL URLWithString:str];  //string>url NSString *str1 = [URL absoluteString];   //url>string...

Android 菜单(OptionMenu)大全 建立你自己的菜单

菜单是用户界面中最常见的元素之一,使用非常频繁,在Android中,菜单被分为如下三种,选项菜单(OptionsMenu)、上下文菜单(ContextMenu)和子菜单(SubMenu),今天这讲是OptionsMenu    一、概述   public boolean onCreateOptionsMenu(Menu menu):使用此方法调用Optio...

Swift网络封装库Moya中文手册之Targets

Targets 使用Moya,我们首先需要定义一个target - 这通常是继承 TargetType 协议的 枚举 变量。接下来,你的app只需要处理这些targets,也就是一些你希望调用API完成的操作。例如:FavouriteTweet(tweetID: String)。 示例代码: public enum GitHub { case Ze...

【转】Asp.Net MVC及Web API框架配置会碰到的几个问题及解决方案

前言 刚开始创建MVC与Web API的混合项目时,碰到好多问题,今天拿出来跟大家一起分享下。有朋友私信我问项目的分层及文件夹结构在我的第一篇博客中没说清楚,那么接下来我就准备从这些文件怎么分文件夹说起。问题大概有以下几点: 1、项目层的文件夹结构       2、解决MVC的Controller和Web API的Controller类名不能相同的问题  ...

【5】Redis从入门到放弃---秒杀案例(Redis的事务+锁机制+lua脚本)

(1)Redis的事务 1.1 Redis事务的定义: Redis事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。 Redis事务的主要作用就是串联多个命令防止别的命令插队。 1.2 Multi、Exec、discard命令 组队阶段:从输入multi命令开始,后面输入的任务命...

把页面的Table直接输出到Excel文件中

有个需求是统计的时候,为生成的html表格提供导出功能,但是这样导出Excel不会显示自身的表格 影响美观,但是excel会显示html的css样式,这里可以通过处理行对象的方式进行导出,但是处理起纵向合并比较麻烦,这里待续! 1 String newStr = new String(name.getBytes(), "ISO8859_1"); 2 res...