java的json解析几种方法_java读取json文件并解析

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

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

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

一、什么是JSON

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

二、JSON 语法

(1)数据在名称/值对中 
(2)数据由逗号分隔 
(3)大括号保存对象 
(4)中括号保存数组

三、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 + '}';
    }
}

(1)利用传统方式:
由实体类生成Json字符串:

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());
}

(2)利用Jackson方式:
由实体类生成Json字符串:

@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);
}

(3)利用GSON方式:
由实体类生成Json字符串:

@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());
}

(4)利用FastJSON方式
由实体类生成Json字符串:

@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/185646.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Android 代码设置RelativeLayout元素居中

    Android 代码设置RelativeLayout元素居中RelativeLayoutrelativeLayout=newRelativeLayout(this);RelativeLayout.LayoutParamsrlp=newRelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_C

    2022年7月17日
    11
  • PLSQL 14.0.6 下载使用教程「建议收藏」

    PLSQL 14.0.6 下载使用教程「建议收藏」众所周知,PLSQL只是一个oracle第三方开发测试工具,它依赖oracle客户端搭配使用,但是oracle客户端有2G,相当庞大,不建议安装。所以我们如果下载安装好PLSQL,再下载好轻量级的支持远程链接的oracle客户端,这样搭配使用可以的话就最好了,答案是可以的。第一步:PLSQL下载与安装PLSQL14.0.6下载地址:https://www.allroundautomations.com/registered-plsqldev/下载下来,除了安装路径更改一下,

    2022年5月7日
    102
  • 决策引擎上线啦「建议收藏」

    决策引擎上线啦「建议收藏」决策服务基本都涵盖了信用和市场的整个生命周期管理,从客户获取、申请审批、客户管理、催收和欺诈管理等业务应用等等方面。基于这样的需求,决策引擎在此时便孕育而生。目前在风控系统上,决策引擎更是都是非常成熟稳定的模块。

    2022年6月18日
    29
  • 宝塔免费ssl_十四运小程序

    宝塔免费ssl_十四运小程序首先声明我也不是什么大佬,只是坑踩多了有经验了而已,看了无数大佬的文章教程,研究了大佬们的Github仓库说明,在此记录,方便自己,也方便大家,各位的点赞、收藏、关注是我持续更新的动力,写的内容也越来越多,如有侵权请私信我删除相关内容

    2022年10月14日
    1
  • C语言的字符串分割

    说起来很有意思,自认为对C语言理解得还是比较深刻的。但居然到今天才知道有个strtok函数,试用了一下突然感慨以前做了多少重复劳动。每次需要解析配置文件,每次需要分割字符串,居然都是自己去分割字符串,

    2021年12月24日
    38
  • 分酒问题(DFS解法)

    分酒问题(DFS解法)题目大概是这样:已知有三个容量分别为3千克、5千克和8千克的并且是没有刻度的酒瓶,3千克和5千克的瓶子均装满了酒,而8千克的瓶子为空。现要求仅用这三个酒瓶将这些酒均分为两个4千克并分别装入5千克和8

    2022年7月2日
    26

发表回复

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

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