我的编程空间,编程开发者的网络收藏夹
学习永远不晚

JSON在Java中如何使用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

JSON在Java中如何使用

本篇内容主要讲解“JSON在Java中如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JSON在Java中如何使用”吧!

    1 为什么要使用JSON

    简介

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。易于人阅读和编写,可以在多种语言之间进行数据交换。同时也易于机器解析和生成。它是基于ECMAScript的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯。

    JSON是Douglas Crockford在2001年开始推广使用的数据格式。当时通用的数据交换语言是XML,但是Douglas Crockford认为XML的生成和解析都太麻烦了,所以就提出了一种简化的数据格式JSON。在2005年至2006年,JSON因其简洁和清晰的层次结构,有利于程序员的编写和阅读,也有利于计算机的解析和生成,提高了效率,从而正是替代了XML,成为主流的数据格式。

    优点:

    数据格式比较简单,易于编程人员阅读和编写,同时也易于计算机生成和解析。

    支持多种语言,包括ActionScript,C,C#,ColdFusion,Java,JavaScript,Perl,PHP,Python,Ruby等语言服务器端语言,便于服务器端的解析。

    因为JSON格式能够直接被服务器端代码使用,大大简化了服务器端和客户端的代码开发量,但是完成的任务不变,且易于维护。

    缺点:

    语法严谨,必须符合JSON语法规则。

    要求字符集必须是Unicode,约束性强。

    举个栗子:

    {"userId" : 1, "userName" : "一个名字"}

    {"first" : {"userId" : 1, "userName" : "一个名字"}, "second" : {"userId" : 2, "userName" : "两个名字"}}

    {"users" : [{"userId" : 1, "userName" : "一个名字"}, {"userId" : 2, "userName" : "两个名字"}]}

    四个基本语法:

    并列的数据之间使用逗号","分开。

    映射用冒号":"表示。

    并列数据的集合(数组JSONArray)使用方括号"[]"包括。

    映射的集合(对象JSONObject)使用大括号"{}"包括。

    Java解析JSON的四种方式:

    四种方式的比较:

    类型特点
    传统JSON方式复杂的Json数据转换成实体类存在缺陷,性能和功能不够完善
    Jackson方式复杂的Json数据转换成实体类存在缺陷,性能和功能优于传统方式

    Gson方式

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

    FastJson方式

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

    四种方式的简单例子:

    创建User实体类。

    @Data@NoArgsConstructor@AllArgsConstructorpublic class User {     @TableId(type = IdType.AUTO)    private Long userId;    private String userName;    private String userPhone;    private Integer userAge;}

    (1)传统JSON方式

    public static void BeanToJson(User user){    JSONObject jsonObject = new JSONObject();    jsonObject.put("userId",user.getUserId());    jsonObject.put("userName",user.getUserName());    jsonObject.put("userPhone",user.getUserPhone());    jsonObject.put("userAge",user.getUserAge());    System.out.println(jsonObject.toString());}//输出结果:{"userPhone":"1234567765","userName":"Forse","userId":1,"userAge":12} public static void JsonToBean(String jsonString){    JSONObject jsonObject = new JSONObject(jsonString);    Integer userId = Integer.valueOf(jsonObject.get("userId").toString());    String userName = jsonObject.get("userName").toString();    String userPhone = jsonObject.get("userPhone").toString();    Integer userAge = Integer.valueOf(jsonObject.get("userAge").toString());    User user = new User(userId,userName,userPhone,userAge);    System.out.println(user.toString());}//输出结果:User(userId=1, userName=Forse, userPhone=123454654, userAge=12)

    (2)使用Jackson方式

    public static void BeanToJson(User user) throws JsonProcessingException {    ObjectMapper objectMapper = new ObjectMapper();    String jsonString = objectMapper.writeValueAsString(user);    System.out.println(jsonString);}//输出结果:{"userId":1,"userName":"Forse","userPhone":"1234567765","userAge":12} public static void JsonToBean(String jsonString) throws JsonProcessingException {    ObjectMapper objectMapper = new ObjectMapper();    User user = objectMapper.readValue(jsonString,User.class);    System.out.println(user);}//输出结果:User(userId=1, userName=Forse, userPhone=123454654, userAge=12)

    (3)使用Gson方式

    public static void BeanToJson(User user){    Gson gson = new Gson();    String jsonString = gson.toJson(user);    System.out.println(jsonString);}//输出结果:{"userId":1,"userName":"Forse","userPhone":"1234567765","userAge":12} public static void JsonToBean(String jsonString){    Gson gson = new Gson();    User user = gson.fromJson(jsonString,User.class);    System.out.println(user);}//输出结果:User(userId=1, userName=Forse, userPhone=123454654, userAge=12)

    (4)使用FastJSON方式

    public static void BeanToJson(User user){    Object jsonString = JSON.toJSON(user);    System.out.println(jsonString);}//输出结果:{"userName":"Forse","userId":1,"userAge":12,"userPhone":"1234567765"} public static void JsonToBean(String jsonString){    User user = JSON.parseObject(jsonString, User.class);    System.out.println(user);}//输出结果:User(userId=1, userName=Forse, userPhone=123454654, userAge=12)

    FastJSON方式详解

    在Java中JSON存在的几种形式:

    (1)JSONObject形式。

    (2)JSONArray形式。

    (3)JSONString形式。

     public static void main(String[] args) {    User user_1 = new User(1,"user_1","1234567765",12);    User user_2 = new User(2,"user_2","1234765454",15);     Object jsonObject1 = JSON.toJSON(user_1);    Object jsonObject2 = JSON.toJSON(user_2);     String jsonString1 = jsonObject1.toString();    String jsonString2 = jsonObject2.toString();     JSONArray jsonArray = new JSONArray();    jsonArray.add(jsonObject1);    jsonArray.add(jsonObject2);     System.out.println("JSONObject: " + jsonObject1 + ", Type: "+ jsonObject1.getClass());    System.out.println("JSONString: " + jsonString1 + ", Type: "+ jsonString1.getClass());    System.out.println("JSONArray: " + jsonArray + ", Type: "+ jsonArray.getClass());  }

    JSON的几种形式之间的变换

    (1)Java类转换为Json对象

        public static void BeanToJSONObject(){        User user = new User(1,"Forse","1234567765",12);        Object jsonObject = JSON.toJSON(user);        System.out.println(jsonObject);    }

    (2)Java类和Json字符串相互转换

        public static void BeanToJSONString(){        User user = new User(1,"Forse","1234567765",12);        //Java对象转换为Json字符串        String jsonString = JSON.toJSONString(user);        System.out.println(jsonString);        //Json字符串转换为Java对象        User user_2 = JSONObject.parseObject(jsonString,User.class);        System.out.println(user_2);    }

    (3)Json字符串和Json对象相互转化

        public static void JSONObjectAndJSONArray(){        User user = new User(1,"Forse","1234567765",12);        Object jsonObject = JSON.toJSON(user);        //Json对象转换为Json字符串        String jsonString = jsonObject.toString();        System.out.println(jsonString + "," + jsonString.getClass());        //Json字符串转换为Json对象        JSONObject jsonObject_2 = JSON.parseObject(jsonString);        System.out.println(jsonObject_2 + "," + jsonObject_2.getClass());    }

    (4)List对象和JsonArray、Json字符串的相互转换

    public static void ListAndJSONArray(){    User user_1 = new User(1,"Forse_1","1234567765",12);    User user_2 = new User(2,"Forse_2","9876542215",15);    List<User> users = new LinkedList<>();    users.add(user_1);    users.add(user_2);            //List对象转换为JsonString字符串    String jsonString = JSON.toJSONString(users);    System.out.println(jsonString);    //JsonString字符串转换为JsonArray对象    JSONArray jsonArray = JSONArray.parseArray(jsonString);    System.out.println(jsonArray);    //JsonArray对象转换为JsonString字符串    String jsonString_2 = JSON.toJSONString(jsonArray);    System.out.println(jsonString_2);    //JsonString字符串转换为List对象    List<User> users_2 = JSON.parseArray(jsonString,User.class);    System.out.println(users_2);}

    JSON嵌套表示树形分支结构及其解析

    使用JSON表示树形结构

    [    {        "PlanName": "test_1",        "members": [            {                "MbrId": 1,                "MbrName": "老板1",                "MbrPost": "老板",                "SubordinateList": [                    {                        "MbrId": 2,                        "MbrName": "组长1",                        "MbrPost": "组长",                        "SubordinateList": [                            {                                "MbrId": 4,                                "MbrName": "组员1",                                "MbrPost": "组员",                                "SubordinateList": []                            },                            {                                "MbrId": 5,                                "MbrName": "组员2",                                "MbrPost": "组员",                                "SubordinateList": []                            }                        ]                    },                    {                        "MbrId": 3,                        "MbrName": "组长2",                        "MbrPost": "组长",                        "SubordinateList": [                            {                                "MbrId": 6,                                "MbrName": "组员3",                                "MbrPost": "组员",                                "SubordinateList": []                            }                        ]                    }                ]            }        ]     }]

     解析JSON

        public static <T> List<T> readTreeByJSON(String filePath,Class<T> clazz,String orgName) throws IOException {        Integer Id = 1;        String jsonString = jsonIO.readJSONFile(filePath);        JSONArray jsonArray = JSON.parseArray(jsonString);        List<T> tList = new LinkedList<>();        for(int i=0;i<jsonArray.size();i++){            JSONObject jsonObject = jsonArray.getJSONObject(i);            String PlanName = jsonObject.get(orgName).toString();            JSONArray mbrArray = jsonObject.getJSONArray("members");            tList.addAll(getMbrList(mbrArray,0,PlanName,Id,clazz));        }        return tList;    }    public static <T> List<T> getMbrList(JSONArray mbrArray,Integer subId,String PlanName,Integer Id,Class<T> clazz){        List<T> tList = new LinkedList<>();        if(mbrArray != null){            for(int i = 0;i<mbrArray.size();i++){                JSONObject mbrObject = mbrArray.getJSONObject(i);                mbrObject.put("subId",subId);                mbrObject.put("PlanName",PlanName);                mbrObject.put("Id",Id++);                T t = JSON.parseObject(mbrObject.toJSONString(), clazz);                tList.add(t);                JSONArray nextArray = mbrObject.getJSONArray("SubordinateList");                if(nextArray.size()!=0){                    Integer mbrId = Integer.valueOf(mbrObject.get("MbrId").toString());                    List<T> tList1 = getMbrList(nextArray,mbrId,PlanName,Id,clazz);                    tList.addAll(tList1);                }            }        }        return tList;    }

    到此,相信大家对“JSON在Java中如何使用”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

    免责声明:

    ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

    ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

    JSON在Java中如何使用

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档

    猜你喜欢

    JSON在Java中如何使用

    本篇内容主要讲解“JSON在Java中如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JSON在Java中如何使用”吧!1 为什么要使用JSON简介JSON(JavaScript Obje
    2023-07-05

    在Go中如何使用Json

    小编给大家分享一下在Go中如何使用Json,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! Encode将一个
    2023-06-22

    如何在HTML5中使用json对象

    这期内容当中小编将会给大家带来有关如何在HTML5中使用json对象,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。具体代码如下所示:
    2023-06-09

    如何在golang中使用Json序列化

    这篇文章给大家介绍如何在golang中使用Json序列化,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。go自带json库"encoding/json" 官当自带json-iterator号称最快的go json解析器。
    2023-06-14

    如何使用Java获取Json中的数据

    这篇文章主要介绍“如何使用Java获取Json中的数据”,在日常操作中,相信很多人在如何使用Java获取Json中的数据问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用Java获取Json中的数据”的疑
    2023-07-06

    JSON在Java中的使用方法实例

    对于java来说,json的对象也是分为JSONObject和JSONArray这两种,每种对象的操作方式不一样哦,下面这篇文章主要给大家介绍了关于JSON在Java中使用的相关资料,需要的朋友可以参考下
    2023-03-15

    golang中如何使用JSON

    今天小编给大家分享一下golang中如何使用JSON的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。JSON是一种通用的数据交
    2023-07-06

    Flex中Json如何使用

    今天就跟大家聊聊有关Flex中Json如何使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。在Flex中使用Json要在Flex中使用Json,首先要下一个Json包。是官方的,却在
    2023-06-17

    PHP中JSON如何使用

    PHP中JSON如何使用,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。PHP5.2开始内置了JSON的支持。当然,如果低于这个版本的话,那么市面上有很多PHP版本的实现,随
    2023-06-17

    如何在java中对json进行处理

    这篇文章主要介绍了如何在java中对json进行处理,此处通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考价值,需要的朋友可以参考下:Java的特点有哪些Java的特点有哪些1.Java语言作为静态面向对象编程语言的代表,
    2023-05-30

    如何在Java中使用ByteArrayOutputStream

    本篇文章给大家分享的是有关如何在Java中使用ByteArrayOutputStream,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。ByteArrayOutputStream
    2023-05-31

    JSONP如何在java中使用

    这篇文章给大家介绍JSONP如何在java中使用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。 json和JSONP这二者在开发中还是很常见的,此处JSON暂且不说。一个众所周知的问题,Ajax直接请求普通文件存在跨域
    2023-05-31

    如何在java中使用BlockingQueue

    今天就跟大家聊聊有关如何在java中使用BlockingQueue,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Java的特点有哪些Java的特点有哪些1.Java语言作为静态面向对
    2023-06-14

    java.time如何在Java中使用

    java.time如何在Java中使用?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、Web应用程序、分布
    2023-06-14

    如何在Java中使用ConcurrentHashMap

    如何在Java中使用ConcurrentHashMap?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Java的特点有哪些Java的特点有哪些1.Java语言作为
    2023-06-14

    ThreadLocal如何在Java中使用

    本篇文章给大家分享的是有关ThreadLocal如何在Java中使用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1. 应用场景ThreadLocal 的常见应用场景有两种:多
    2023-06-15

    stack如何在java中使用

    stack如何在java中使用?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。java中stack类继承于vector,其特性为后进先出(lastinfirstout).入栈
    2023-05-30

    ActiveMQ如何在Java中使用

    ActiveMQ如何在Java中使用 ?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。所需引入Jar包:jms-1.1.jaractivemq-all-5.15.
    2023-05-31

    Iterator如何在Java中使用

    Iterator如何在Java中使用 ?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1.IteratorJava提供一个专门的迭代器<>I
    2023-05-31

    编程热搜

    • Python 学习之路 - Python
      一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
      Python 学习之路 - Python
    • chatgpt的中文全称是什么
      chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
      chatgpt的中文全称是什么
    • C/C++中extern函数使用详解
    • C/C++可变参数的使用
      可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
      C/C++可变参数的使用
    • css样式文件该放在哪里
    • php中数组下标必须是连续的吗
    • Python 3 教程
      Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
      Python 3 教程
    • Python pip包管理
      一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
      Python pip包管理
    • ubuntu如何重新编译内核
    • 改善Java代码之慎用java动态编译

    目录