Java解析JSON的四种方式

Java解析JSON的四种方式微信搜索关注 咖啡遇上代码 公众号 查看更多一 什么是 JSONJSON 是一种轻量级的数据交换格式 采用完全独立于编程语言的文本格式来存储和表示数据 简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言 易于阅读和编写 同时也易于解析和生成 并有效地提升网络传输效率 二 JSON 语法 1 数据在名称 值对中 2 数据由逗号分隔 3 大括号保存对象 4 中括号保存数

微信搜索关注“咖啡遇上代码”公众号,查看更多

一、什么是JSON

JSON是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于阅读和编写,同时也易于解析和生成,并有效地提升网络传输效率。

二、JSON 语法

三、Java中JSON的生成与解析的四种方式(简单的Demo):

一个实体类:用于与JSON数据进行相互转换

public class Person {    private String name;    private String sex;    private int age;    public Person(String name, String sex, int age) {        this.name = name;        this.sex = sex;        this.age = age;    }    public String getName() {        return name;    }    public String getSex() {        return sex;    }    public int getAge() {        return age;    }    @Override    public String toString() {        return "Person{name='" + name + '\'' + ", sex='" + sex + '\'' + ", age=" + age + '}';    } } 
public Person getPerson(){    return new Person("张三", "男", 25); } @Test public void EntityToJson(){    JSONObject jsonObject = new JSONObject();    jsonObject.put("name", getPerson().getName());    jsonObject.put("sex", getPerson().getSex());    jsonObject.put("age", getPerson().getAge());    System.out.println(jsonObject.toString()); } 

由Json字符串生成实体类:

@Test public void JsonToEntity(){    String jsonString = "{\"sex\":\"男\",\"name\":\"张三\",\"age\":25}";    JSONObject jsonObject = new JSONObject(jsonString);    Person person = new Person(jsonObject.get("name").toString(), jsonObject.get("sex").toString(), Integer.valueOf(jsonObject.get("age").toString()));    System.out.println(person.toString()); } 
@Test public void EntityToJson() throws IOException {    Person person = new Person("张三", "男", 25);    ObjectMapper objectMapper = new ObjectMapper();    String jsonString = objectMapper.writeValueAsString(person);    System.out.println(jsonString); } 

由Json字符串生成实体类:

@Test public void JsonToEntity() throws IOException {    ObjectMapper objectMapper = new ObjectMapper();    String jsonString = "{\"name\":\"张三\",\"sex\":\"男\",\"age\":25}";    Person person = objectMapper.readValue(jsonString, Person.class);    System.out.println(person); } 
@Test public void EntityToJson(){    Person person = new Person("张三", "男", 25);    Gson gson = new Gson();    String jsonString = gson.toJson(person);    System.out.println(jsonString); } 

由Json字符串生成实体类:

@Test public void JsonToEntity(){    String jsonString = "{\"name\":\"张三\",\"sex\":\"男\",\"age\":25}";    Gson gson = new Gson();    Person person = gson.fromJson(jsonString, Person.class);    System.out.println(person.toString()); } 
@Test public void EntityToJson(){    Person person = new Person("张三", "男", 25);    Object jsonString = JSON.toJSON(person);    System.out.println(jsonString.toString()); } 

由Json字符串生成实体类:

@Test public void JsonToEntity(){    String jsonString = "{\"name\":\"张三\",\"sex\":\"男\",\"age\":25}";    Person person = JSON.parseObject(jsonString, Person.class);    System.out.println(person.toString()); } 

四、几种方式的比较

类型

简介

传统Json方式:

复杂的Json数据转换成实体类存在缺陷,性能和功能不够完善

Jackson方式:

复杂的Json数据转换成实体类存在缺陷,性能和功能优于传统方式

Gson方式:

功能方面在几种方式中最优,性能方面不如Jackson方式

FastJson方式:

复杂的实体类转换成Json数据存在缺陷,解析json的速度优于其他方式

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/200240.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月20日 上午11:14
下一篇 2026年3月20日 上午11:15


相关推荐

  • Linux命令之chown命令

    Linux命令之chown命令Linuxchown 英文全拼 changeowner 命令用于设置文件所有者和文件关联组的命令 chown 需要超级用户 root 的权限才能执行此命令 chown 更改每个给定文件的用户和 或组所有权 如果只提供了所有者 用户名或数字用户 ID 则该用户将成为每个给定文件的所有者 并且不会更改文件组 如果所有者后跟冒号和组名 或数字组 ID 且两者之间没有空格 则文件的组所有权也会更改 如果用户名后面有冒号 但没有组名 则该用户将成为文件的所有者 并且文件组将更改为该用户的登录组 如果给出了冒号和组

    2026年3月20日
    2
  • navicat11.0激活码-激活码分享

    (navicat11.0激活码)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlMLZPB5EL5Q-eyJsaWNlbnNlSWQi…

    2022年3月20日
    375
  • mybatiscodehelperpro在线激活码【永久激活】

    (mybatiscodehelperpro在线激活码)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月22日
    798
  • 简单常用滤波算法C语言实现「建议收藏」

    简单常用滤波算法C语言实现「建议收藏」1.限幅滤波算法(程序判断滤波算法)方法解析:根据经验判断,确定两次采样允许的最大偏差值(设定为A),每次检测到新值时判断:如果本次值与上次值之差如果本次值与上次值只差>A,则本次值无效,放弃本次值,用上次值代替本次值。优点:能有效克服因偶然因素引起的脉冲干扰缺点:无法抑制那种周期性的干扰,平滑度差#defineA10charvalue;charfi

    2022年5月28日
    50
  • 超干货!手把手教你如何在本地部署 DeepSeek,还能实现可视化对话,快速掌握,高效上手!

    超干货!手把手教你如何在本地部署 DeepSeek,还能实现可视化对话,快速掌握,高效上手!

    2026年3月16日
    2
  • 按位取反怎么运算_按位取反运算

    按位取反怎么运算_按位取反运算读本文前请首先搞懂“反码”,“取反”,“按位取反(~)”,这3个概念是不一样的。取反:0变1,1变0反码:正数的反码是其本身,对于负数其符号位不变其它各位取反(0变1,1变0)按位取反(~):这将是下面要讨论的。“~”运算符在c、c++、java、c#中都有,之前一直没有遇到这个运算符。要弄懂这个运算符的计算方法,首先必须明白二进制数在内存中的存放形式,二

    2022年4月19日
    117

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号