fastjson生成json字符串的时候出现$ref

shibazizhan      2022-02-14     761

关键词:

import java.util.ArrayList;
import java.util.List;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;

/**
 * fastjson中$ref对象重复引用问题
 * 
 * 介绍:
 * FastJson提供了SerializerFeature.DisableCircularReferenceDetect这个序列化选项,用来关闭引用检测。
 * 关闭引用检测后,重复引用对象时就不会被$ref代替,但是在循环引用时也会导致StackOverflowError异常。
 * 
 * 用法:
 * JSON.toJSONString(object, SerializerFeature.DisableCircularReferenceDetect);
 */
public class TestFastJson {

    List<Person> list = new ArrayList<Person>();
    Person p = new Person("ZhangSan", 23);

    /**
     *  测试main
     */
    public static void main(String[] args) {
        // new TestFastJson().test1();

        new TestFastJson().test2();
    }

    /**
     * 未关闭引用检测,转化字符串时会出现$ref
     */
    public void test1() {
        list.add(p);
        list.add(p);
        String jsonStr = JSON.toJSONString(list);
        System.out.println(jsonStr);
        // [{"age":23,"name":"ZhangSan"},{"$ref":"$[0]"}]

    }

    /**
     * 关闭引用检测后,$ref的问题就会被解决
     */
    public void test2() {
        list.add(p);
        list.add(p);
        String jsonStr = JSON.toJSONString(list, SerializerFeature.DisableCircularReferenceDetect);
        System.out.println(jsonStr);
        // [{"age":23,"name":"ZhangSan"},{"age":23,"name":"ZhangSan"}]
    }

}

class Person {
    private String name;
    private int age;

    // 构造函数
    public Person(String name, int age) {
        super();
        this.name = name;
        this.age = age;
    }

    // getters/setters(略)

}

fastjson顺序遍历json字段

fastJson在把json格式的字符串转换成JSONObject的时候,使用的是HashMap,所以排序规则是根据HASH值排序的,如果想要按照字符串顺序遍历JSON属性,需要在转换的时候指定使用LinkedHashMap代替HashMap。publicstaticvoidmain(String[]args){StringjsonStr="... 查看详情

fastjson怎么解析像“

...、JDK6、Android、阿里云手机等环境。  一.fastjson生成json字符串(JavaBean,List<JavaBean>,List<String>,List<Map<String,Object>)  StringjsonStrng=JSON.toJSONString(object);  二.fastjson解析json字符串为四种类型  1.JavaBean  Personpe 查看详情

fastjson怎么解析像“

...、JDK6、Android、阿里云手机等环境。  一.fastjson生成json字符串(JavaBean,List<JavaBean>,List<String>,List<Map<String,Object>)  StringjsonStrng=JSON.toJSONString(object);  二.fastjson解析json字符串为四种类型  1.JavaBean  Per 查看详情

gson和fastjson

...,不需要例外额外的jar,能够直接跑在JDK上。阿里巴巴的FastJson:无依赖,不需要例外额外的jar,能够直接跑在JDK上。FastJson在复杂类型的Bean转换Json上会出现一些问题,可能会出现引用的类型,导致Json转换出错,需要制定引用。... 查看详情

为啥json字符串当中会出现反斜杠?

参考技术A相信很多小伙伴在使用json的过程中,会发现有时候json中会出现反斜杠,是不是很奇怪这个问题?我使用的fastjson。通过下面的小例子来看下:执行结果:分析:1)首先我们组装一个map2)将map进行序列化进行输出,发... 查看详情

json详解以及fastjson使用教程

...在花括号中2:数据以"键:值"对的形式出现(其中键多以字符串形式出现,值可取字符串,数值,甚至其他json对象)3:每两个"键:值"对以逗号分隔(最后一个"键:值"对省略逗号)遵守上面3点,便可以形成一个json对象。1.2:J... 查看详情

75json解析库---fastjson,gson

...ava对象和JSON数据之间进行映射的Java类库。可以将一个JSON字符串转成 查看详情

fastjson解析超长json串以及转成list,map等方法实例

...工作中出现了这么一个问题,在手机桌面的app加密解密后,字符串超长,读取两三个都会出现内存溢出的现象,最后只能根据id累加来一个个解析.解析出来的数据最后在进行处理.转换成对象使用的是阿里巴巴的fastjson,上度娘找了一下,... 查看详情

gson、fastjson、jackson、json-lib对比总结

...json对象直接操作json以及一些json的工具a)格式化Jsonb)判断字符串是否是json,通过捕捉的异常来判断是否是jsonc)从json串中获取属性d)除去json中的某个属性e)向json中添加属性f)修改json中的属性g)判断json中是否有属性h)json中日期格式的... 查看详情

fastjson解析php生成的json报错

php服务端生成了如下json字符串resultStr:"errno":0,"msg":"Success","total_count":3,"data":["0","id":"1","product_id":"1","product_name":"商品A","recon_status"... 查看详情

fastjson的使用

fastJson对于json格式字符串的解析主要用到了一下三个类:JSON:fastJson的解析器,用于JSON格式字符串与JSON对象及javaBean之间的转换。JSONObject:fastJson提供的json对象。JSONArray:fastJson提供json数组对象。我们可以把JSONObject当成一个Map... 查看详情

fastjson对于json格式字符串json对象及javabean之间的相互转换

fastJson对于json格式字符串的解析主要用到了一下三个类:JSON:fastJson的解析器,用于JSON格式字符串与JSON对象及javaBean之间的转换。JSONObject:fastJson提供的json对象。JSONArray:fastJson提供json数组对象。我们可以把JSONObject当成一个Map... 查看详情

fastjson使用详解(代码片段)

...son常用API四、fastjson使用演示测试类准备1.java类转换为json字符串2.json字符串转为java类五、fastjson实际开发应用1.对复杂的json串转为java类2.对json串的操作六、fastjson漏洞问题一、fastjson介绍?在前后端数据传输交互中,经常会遇到字... 查看详情

fastjson(代码片段)

...astjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将JavaBean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。fastjson的API十分简洁。Stringtext=JSON.toJSONString(obj);//序列化VOvo=JSON.pa 查看详情

fastjson之json对象json字符串java对象之间的转换

Fastjson之Json对象、Json字符串、Java对象之间的转换Maven配置<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.47</version></dependen 查看详情

json三-------com.alibaba.fastjson

1.需要阿里巴巴的fastjson.jar2.将json字符串转为JSONObject,通过JSONObject.parseObject(json字符串),取值的话通过json对象的getString(),getIntValue()等等获取JSONObject的值Stringstudent="{‘name‘:‘张三‘,‘age‘:30}";JSONObjectjson=JSONObject.par 查看详情

fastjson转换对象,属性首字母大小写的问题

...4","LoginType":"1","Mac":"02:00:00:62:73:74"等等。转换成Json的时候FastJson的源码会做一段操作,fastjson内部做Bean转换时会使用到com.alibaba.fastjson. 查看详情

alijsonfast的使用

...A1.JSON:另外两个都有继承,fastjson解析器,用于将Json格式字符串与Json对象和bean对象之间的转化;2.JSONObject:fastjson提供的json对象,类型:Map<String,Object>3.JSONArray:fastjson提供的json数组对象,类型:List<Object>JSONObjectobject=JSON.... 查看详情