首页 > 其他分享 >JSON常用方法

JSON常用方法

时间:2023-04-23 09:45:47浏览次数:71  
标签:常用 name age parseObject JSON toJSONString 方法 String

转自:https://blog.csdn.net/wts563540/article/details/108418454

1、JSON.parseObject和JSON.toJSONString

    JSON.parseObject,是将Json字符串转化为相应的对象;JSON.toJSONString则是将对象转化为Json字符串。在前后台的传输过程中,JSON字符串是相当常用的,这里就不多介绍其功能了,直接举一下应用的小例子,帮助理解这两个方法的用法。

首先用maven引入fastjson

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
     
        <groupId>com.wujiang.test</groupId>
        <artifactId>test</artifactId>
        <version>1.0-SNAPSHOT</version>
     
        <properties>
            <fastjson_version>1.2.28</fastjson_version>
        </properties>
     
        <dependencies>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>fastjson</artifactId>
                <version>${fastjson_version}</version>
            </dependency>
        </dependencies>
    </project>

定义一个model类,员工,有四个属性,如下所示:

 @Data
    public class Staff {
        private String name;
        private Integer age;
        private String sex;
        private Date birthday;
   
        @Override
        public String toString() {
            return "Staff{" +
                    "name='" + name + '\'' +
                    ", age=" + age +
                    ", sex='" + sex + '\'' +
                    ", birthday=" + birthday +
                    '}';
        }
    }

好的,下一步,测试一下JSON.parseObject 和 JSON.toJSONString方法。这里故意在Json字符串中多了一个telephone,少了一个Staff中的birthday,看看输出的对象会有什么变化

    public class jsonTest {
        public static void main(String[] args) {
            /**
             * json字符串转化为对象
             */
            String jsonString = "{name:'Antony',age:'12',sex:'male',telephone:'88888'}";
            Staff staff = JSON.parseObject(jsonString, Staff.class);
            System.out.println(staff.toString());
     
            /**
             * 对象转化为json字符串
             */
            String jsonStr = JSON.toJSONString(staff);
            System.out.println(jsonStr);
        }
    }

输出结果
    Staff{name='Antony', age=12, sex='male', birthday=null}
    {"age":12,"name":"Antony","sex":"male"}
    //如果age是String类型,那么输出结果变为
    //{"age":"12","name":"Antony","sex":"male"}

在JSON.parseObject 的时候,会去填充名称相同的属性。对于Json字符串中没有,而model类有的属性,会为null;对于model类没有,而Json字符串有的属性,不做任何处理。

至于 JSON.toJSONString 就不需要多说了,看一下就知道

至于应用场景,比方说,用户登录微信公众号的时候,调用微信官方的restful接口,得到该用户的所有信息的一个Json字符串,然后写一个类(将自己需要的信息封装成一个类)。例如下面的伪代码

    String s = httpRequest.sendGet("https://api.weixin.qq.com/sns/oauth2/access_token","appid=" + appId + "&secret=" + appSecret + "&code=" + code + "&grant_type=authorization_code");
     
    UserAuthorizationReturn userAuthorizationReturn = JSON.parseObject(s, UserAuthorizationReturn.class);

2、JSON.parseArray

这个方法的作用就是将json格式的数据转换成数组格式。

假设有Person这个类,有json类型数据jsonStr = [{"name":"张三","age":"1"},{"name":"李四","age":"4"}],那么List lists = json.parseArray(jsonStr, Person.class);lists就可以接收jsonStr了
三者区别:
1、toJSONString
    String str = JSON.toJSONString(Entity);

2、parseObject
    Entity toObj = JSON.parseObject(str,  Entity.class);

3、parseArray
    String arrJson = JSON.toJSONString(entityList);
    List<Entity> arrList = JSON.parseArray(arrJson, Entity.class);

 

标签:常用,name,age,parseObject,JSON,toJSONString,方法,String
From: https://www.cnblogs.com/sensenh/p/17345508.html

相关文章

  • 【DP】LeetCode 91. 解码方法
    题目链接91.解码方法思路分析动态规划题目的时候只需要考虑最后一个阶段,因为所有的阶段转化都是相同的,考虑最后一个阶段容易发现规律在数组的动态规划问题中,一般dp[i]都是表示以nums以前i个元素组成(即nums[i-1])的状态;dp[i][j]分别表示以nums1前i个元素(即nums1......
  • Oracle apex社区教程 PLSQL常用时间函数
    摘自OracleAPEX社区www.sqlu.cnOracleAPEX中文社区|OracleAPEX资源|OracleAPEX学习|EBS开发|EBSINTERFACE|OracleEBS开发|Oracle数据库开发|EBSAPI 一,获得时间1.Sysdate当前日期和时间Selectsysdatefromdual;2.Last_day本月最后一天Selectlast_day(sysdate)......
  • Python time 库常用函数
    time模块中时间表现的格式主要有三种:timestamp时间戳,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量struct_time时间元组,共有九个元素组。formattime格式化时间,已格式化的结构使时间更具可读性。包括自定义格式和固定格式。使用time库前先用import导......
  • JSON字段基本操作
    CREATETABLE`t`(`id`INTUNSIGNEDNOTNULL,`js`JSONNOTNULL,PRIMARYKEY(`id`));{"num":1,"name":"abc","age":16,"newNum":123,"class":{......
  • 解决国内 github.com 打不开的最最最准确方法
    https://blog.csdn.net/qq_41176055/article/details/128496628?ops_request_misc=&request_id=&biz_id=102&utm_term=github.com%E6%97%A0%E6%B3%95%E8%AE%BF%E9%97%AE&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-0-1......
  • wsl2中docker启动不了的问题解决方法
    在wsl2的ubuntu系统中安装docker后,sudoservicedockerstart一直启动不起来在网上找到了解决方案https://juejin.cn/post/7197594278083919932解决方法这个错误提示通常是因为系统中使用的是经过修改的nftables,而Docker安装程序使用iptables进行NAT。为了解决这个问......
  • 《用户故事与敏捷方法》读书笔记5
      软件开发是渐进明细的过程,充满挑战。软件需求是被识别为最常见的痛苦根源。如何定义需求,冗长的文档已经不被阅读者接受,简单、精准、一目了然的格式一致的用户故事越来越被接受。当掌握刚刚足够的信息就继续前行,按需及时开展,通过交谈获取所需要的细节。从用户角度出发描述......
  • bash shell下最方便的字符串大小写转换方法
     用tr需要新增变量,用declare或typeset需要在变量赋值前或者赋值后单独声明,都有些麻烦此方法为bash4.0以后新增,bash4.02009年发布$test="abcDEF"#把变量中的第一个字符换成大写$echo${test^}AbcDEF#把变量中的所有小写字母,全部替换为大写$echo${test^^}ABCDEF#......
  • 常用代码-接口交互+构建页面
    点击#search,无参请求,构造表格代码:functiongetDataSet(){$("body").on("click","#search",function(){$.ajax({type:"get",url:"http://114.67.241.121:8080/product/list",......
  • 为什么重写equals方法就一定要重写hashCode方法
    在hashMap和hashTable集合中,元素是不能够重复的,所以我们在添加元素时,先要判断是否存在这个元素。而判断的方法就是先用hashCode方法判断哈希值是否相同,如果哈希值相同,再使用equals判断是否相同,如果都相同,则才证明两个元素不同。而如果哈希值不同,则不会进行后续的equals判断。哈希......