FastJson的坑

前端开发 作者: 2024-08-25 21:00:01
1.list中放入同一个对象,会出现内存地址引用{"$ref":"#[0]"},后台可以识别,但是前台不会识别 @Test public void testList(){ User user = new User(); user.setUserName("cgx"); user.setPassword("123456");
@Test
    public void testList(){
        
        User user = new User();
        user.setUserName("cgx");
        user.setPassword("123456");
        
        User user1 = new User();
        user1.setUserName("zbz");
        user1.setPassword("123456");
        
        ArrayList list = new ArrayList();
        list.add(user);
        list.add(user1);
        list.add(user);
        
        String jsonString = JSON.toJSONString(list,SerializerFeature.DisableCircularReferenceDetect);//关闭循环引用
        System.out.println(jsonString);
    }
JSON.toJSONString(list,true),会格式化json,方便查看
@Test
    public void testList1(){
        
        User user = new User();
        user.setUserName("cgx");
        user.setPassword("123456");
        
        
        HashSet<Role> roles = new HashSet<Role>();
        HashSet<User> users = new HashSet<User>();
        users.add(user);
        
        
        Role role = new Role();
        role.setName("测试角色");
        role.setUsers(users);
        roles.add(role);
        
        user.setRoles(roles);
        
        //两种办法防止循环引用
        //1.在bean的属性上直接@JSONField(serialize=false)去掉不需要转换的属性
        
        //2.
        
        // 遇到sid和sname属性正常进行转换json
        SimplePropertyPreFilter filter = new SimplePropertyPreFilter("password","roles","name");
        
        
        String jsonString = JSON.toJSONString(user,filter,SerializerFeature.DisableCircularReferenceDetect);
        System.out.println(jsonString);
    }
原创声明
本站部分文章基于互联网的整理,我们会把真正“有用/优质”的文章整理提供给各位开发者。本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
本文链接:http://www.jiecseo.com/news/show_68598.html
fastjson