当前位置: 首页 > article >正文

【Java Web】JSON 以及 JSON 转换

JSON(JavaScript Object Notation)一种灵活、高效、轻量级的数据交换格式,广泛应用于各种数据交换和存储场景。

基本特点

1、简单易用:JSON格式非常简单,易于理解和使用。

2、轻量级:相比XML等其他数据格式,JSON占用的空间更小,传输效率更高。

3、跨平台:JSON是一种纯文本格式,可以轻松地在不同的系统和编程语言之间交换数据。

4、可读性强:JSON格式的数据结构清晰,易于阅读和调试。

数据结构

JSON支持两种数据结构

1、对象(Object):无序的键值对集合,用大括号 {} 包围。键必须是字符串,值可以是任意有效的JSON数据类型。

{
  "name": "John",
  "age": 30,
  "isStudent": false,
  "hobbies": ["reading", "coding", "traveling"]
}

2、数组(Array):有序的值集合,用方括号 [] 包围。数组中的值可以是任意有效的JSON数据类型。

[
  "apple",
  "banana",
  42,
  true,
  {
    "name": "Alice",
    "age": 25
  }
]

在Java中使用 org.json.JSONObject 类来解析和生成JSON数据。

import org.json.JSONObject;

// 解析JSON
String jsonString = "{\"name\": \"John\", \"age\": 30}";
JSONObject jsonObject = new JSONObject(jsonString);
System.out.println(jsonObject.getString("name"));  // 输出: John

// 生成JSON
JSONObject jsonObject = new JSONObject();
jsonObject.put("name", "John");
jsonObject.put("age", 30);
String jsonString = jsonObject.toString();
System.out.println(jsonString);  // 输出: {"name":"John","age":30}

转换

fastjson 是阿里巴巴开源的一个高性能的JSON库
在这里插入图片描述
导入项目
在这里插入图片描述

1、对象或集合(内套集合也可以)转JSON对象

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

public class User {
    private String name;
    private int age;
    // getter 和 setter 方法
}

public class JsonExample {
    public static void main(String[] args) {
        User user = new User();
        user.setName("John");
        user.setAge(30);

        // 对象转JSON字符串
        String jsonString = JSON.toJSONString(user);
        System.out.println(jsonString);  // 输出: {"name":"John","age":30}

        // 对象转JSONObject
        JSONObject json = new JSONObject();
        json.putAll(JSON.parseObject(jsonString));
        System.out.println(json.toJSONString());  // 输出: {"name":"John","age":30}
    }
}

2、JSON格式字符串与JSON对象之间的转换

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

public class JsonExample {
    public static void main(String[] args) {
        String j = "{\"goodslist\":[{\"goods_id\":1}],\"name\":\"张三\"}";

        // JSON字符串转JSONObject
        JSONObject jsonObject = JSON.parseObject(j);
        System.out.println(jsonObject.toJSONString());  // 输出: {"goodslist":[{"goods_id":1}],"name":"张三"}

        // 或者
        JSONObject jsonObject2 = JSONObject.parseObject(j);
        System.out.println(jsonObject2.toJSONString());  // 输出: {"goodslist":[{"goods_id":1}],"name":"张三"}
    }
}

3、JSON字符串-数组类型与JSONArray之间的转换

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

public class JsonExample {
    public static void main(String[] args) {
        String JSON_ARRAY_STR = "[{\"studentName\":\"lily\",\"studentAge\":12},{\"studentName\":\"lucy\",\"studentAge\":15}]";

        // JSON字符串转JSONArray
        JSONArray jsonArray = JSON.parseArray(JSON_ARRAY_STR);
        System.out.println(jsonArray.toJSONString());  // 输出: [{"studentName":"lily","studentAge":12},{"studentName":"lucy","studentAge":15}]
    }
}

4、复杂JSON格式字符串与JSONObject之间的转换

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

public class JsonExample {
    public static void main(String[] args) {
        String j = "{\"goodslist\":[{\"goods_id\":1}],\"name\":\"张三\"}";

        // 复杂JSON字符串转JSONObject
        JSONObject jsonObject = JSON.parseObject(j);
        System.out.println(jsonObject.toJSONString());  // 输出: {"goodslist":[{"goods_id":1}],"name":"张三"}
    }
}

5、JSON字符串转JAVA对象

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;

public class User {
    private String name;
    private int age;
    // getter 和 setter 方法
}

public class JsonExample {
    public static void main(String[] args) {
        String j = "{\"name\":\"张三\",\"age\":30}";

        // JSON字符串转User对象
        User user = JSON.parseObject(j, new TypeReference<User>() {});
        System.out.println(user.getName());  // 输出: 张三
        System.out.println(user.getAge());   // 输出: 30
    }
}

6、JSON字符串集合转LIST对象

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;

public class Goods {
    private int goods_id;
    // getter 和 setter 方法
}

public class JsonExample {
    public static void main(String[] args) {
        String str = "[{\"goods_id\":1},{\"goods_id\":2}]";

        // JSON字符串集合转List<Goods>对象
        List<Goods> goodslist = JSON.parseObject(str, new TypeReference<ArrayList<Goods>>() {});
        for (Goods goods : goodslist) {
            System.out.println(goods.getGoods_id());
        }
        // 输出: 1
        // 输出: 2
    }
}
  • JSON字符串转JSON对象:使用 JSON.parseObject()JSONObject.parseObject()
  • JSON对象转JSON字符串:使用 JSON.toJSONString()jsonObject.toJSONString()
  • JSON字符串转JSONArray:使用 JSON.parseArray()
  • JSON字符串转Java对象:使用 JSON.parseObject() 并指定目标类或 TypeReference
  • JSON字符串集合转List对象:使用 JSON.parseObject() 并指定 TypeReference

http://www.kler.cn/a/396594.html

相关文章:

  • SQL Server Service Broker完整示例
  • AlphaFold3中文使用说明
  • 【2025最新计算机毕业设计】基于SpringBoot+Vue电脑在线装机指南教程网站【源码+文档】
  • H5页面多个视频如何只同时播放一个?
  • CSS 响应式设计之媒体查询技术
  • 【Linux】系统中负责回收内存的进程和机制有哪些?
  • JavaWeb笔记整理——Spring Task、WebSocket
  • 【摄像头识别动物行为通常涉及计算机视觉技术】
  • 基于Java+SpringBoot+Vue的智慧社区设计与实现
  • 用枚举算法解决LeetCode第3348题最小可整除数位乘积II
  • 代码随想录算法训练营第三十八天 | 322.零钱兑换 279.完全平方数 139.单词拆分 多重背包以及背包总结
  • 如何使用EasyExcel生成多列表组合填充的复杂Excel示例
  • Dockerfile构建镜像(练习一Apache镜像)(5-1)
  • 蓝桥杯每日真题 - 第10天
  • [Android]相关属性功能的裁剪
  • Linux---常用shell脚本
  • 力扣654:最大二叉树
  • 【鸿蒙开发】第二十二章 IPC与RPC进程间通讯服务
  • 【LeetCode】【算法】53. 最大子数组和
  • 【日常记录-Git】撤销工作区中所有已跟踪文件的修改
  • Java集合(Collection+Map)
  • 回调函数的概念、意义和应用场景
  • SQL 审核在 CloudQuery 的四大场景应用
  • leetcode hot100【 LeetCode 121.买卖股票的最佳时机】java实现
  • uniapp ios app以framwork形式接入sentry
  • 使用--log-file保存pytest的运行日志