美文网首页
FastJson的CRUD

FastJson的CRUD

作者: 云2022 | 来源:发表于2020-07-06 21:24 被阅读0次
    Json,是一种保持键值对格式的String类型数据,常见于前后端交互过程中的数据传输。比如:SpringMVC的@Responsebody,还有对应的阿里巴巴总结的FastJson工具包。

    今天,由于开发正好有用到这个部分,我想从几个实际的例子去总结下FastJson的使用方式,以便阶段性回顾。
    环境配置:

           <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.11</version>
                <scope>compile</scope>
            </dependency>
           <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>fastjson</artifactId>
                <version>1.2.70</version>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.18.12</version>
                <scope>compile</scope>
            </dependency>
            <dependency>
                <groupId>commons-io</groupId>
                <artifactId>commons-io</artifactId>
                <version>2.5</version>
            </dependency>
    
    1. Object 转Json格式的字符串相互转换
    • Object->Json(String):主要用到的方法是:
      1)JSON.toJSONString(Object),可见下面的例子:
      User.java
    @Getter
    @Setter
    public class User {
        @JSONField(name = "用户名", ordinal = 2)
        private String username;
        @JSONField(name = "密码", ordinal = 1)
        private String password;
    
        public User() {
        }
    
        public User(String username, String password) {
            this.username = username;
            this.password = password;
        }
    
        @Override
        public String toString() {
            return "User [username=" + username + ", password=" + password + "]";
        }
    }
    

    UserGroup.java

    @Getter
    @Setter
    public class UserGroup {
        @JSONField(name="组名")
        private String name;
    
        @JSONField(name="组详情")
        private List<User> users = new ArrayList<User>();
    
        public UserGroup(){}
    
        public UserGroup(String name,List<User> users){
            this.name = name;
            this.users = users;
        }
    
        @Override
        public String toString() {
            return "UserGroup [name=" + name + ", users=" + users + "]";
        }
    }
    

    测试类:Z_Test

    public class Z_Test {
        /**
         * java对象转 json字符串
         */
        @Test
        public void objectTOJson(){
            //简单java类转json字符串
            User user = new User("dmego", "123456");
            String UserJson = JSON.toJSONString(user);
            System.out.println("java->json:"+UserJson);
    
            //List<Object>转json字符串
            User user1 = new User("zhangsan", "123123");
            User user2 = new User("lisi", "321321");
            List<User> users = new ArrayList<User>();
            users.add(user1);
            users.add(user2);
            String ListUserJson = JSON.toJSONString(users);
            System.out.println("List->json:"+ListUserJson);
    
            //复杂java类转json字符串
            UserGroup userGroup = new UserGroup("userGroup", users);
            String userGroupJson = JSON.toJSONString(userGroup);
            System.out.println("复杂obj->json:"+userGroupJson);
        }
    
    • Json(String)->Object,主要用到的方法是
      1)JSONObject.parseObject(jsonString):这个方法主要是用于后面取属性值;
      2)JSON.parseObject(jsonString, Oject.class):这个则直接转为对象;
      3)JSON.parseArray(jsonString,Object.class):这个则转为集合对象;
      测试方法:
    /**
         * json字符串转java对象
         * 注:字符串中使用双引号需要转义 (" --> \"),这里使用的是单引号
         */
        @Test
        public void JsonTOObject(){
            /* json字符串转简单java对象
             * 字符串:{"密码":"123456","用户名":"dmego"}*/
    
            String jsonStr1 = "{'密码':'123456','用户名':'dmego'}";
            JSONObject jsonObject = JSONObject.parseObject(jsonStr1);
            String rs = jsonObject.get("密码").toString();
            System.out.println("rs = " + rs);
            User user = JSON.parseObject(jsonStr1, User.class);
            System.out.println("json->object:"+user.toString());
    
            /*
             * json字符串转List<Object>对象
             * 字符串:[{"密码":"123123","用户名":"zhangsan"},{"密码":"321321","用户名":"lisi"}]
             */
            String jsonStr2 = "[{'密码':'123123','用户名':'zhangsan'},{'密码':'321321','用户名':'lisi'}]";
            List<User> users = JSON.parseArray(jsonStr2, User.class);
            System.out.println("json->List:"+users.toString());
    
            /*json字符串转复杂java对象
             * 字符串:{"name":"userGroup","users":[{"密码":"123123","用户名":"zhangsan"},{"密码":"321321","用户名":"lisi"}]}
             * */
            String jsonStr3 = "{'组名':'userGroup','组详情':[{'密码':'123123','用户名':'zhangsan'},{'密码':'321321','用户名':'lisi'}]}";
            UserGroup userGroup = JSON.parseObject(jsonStr3, UserGroup.class);
            System.out.println("json->复杂obj:"+userGroup);
        }
    }
    
    2. 注解@JSONField
    @JSONField注解的四个常用属性

    总结

    1. 网上对于FastJson的使用例子确实很多,不过,自己敲一遍确实不一样:发现细节。IDEA导入Junit测试包时,并不需要在pom文件里加入junit的依赖,直接按Alt+Shift+Enter就可以导入;
    2. 自己敲一遍和通过书写的方式再梳理一遍,感觉又不一样:抓重点。在FastJson包里有很多其他方法,比如,NameFilter,ContextValueFilter接口等,虽然有看过,但在梳理的过程中发现这两部分有点难懂,且不是重点,可以暂时不用看。
    3. 其他:分享这件事,确实令人很愉快。让自己的思想通过互联网有机会与有共同兴趣爱好的人一起讨论,真的很开心,希望自己继续保持。加油!

    相关文章

      网友评论

          本文标题:FastJson的CRUD

          本文链接:https://www.haomeiwen.com/subject/vxwgqktx.html