fastjson 对象转json(如何解决fastjson把对象转化成json避免$ref)

本文目录
如何解决fastjson把对象转化成json避免$ref
有的, 刚本来也想在网上找找解决方式,后面自己找方法了,就是在组装数据时,将被引用的那个原始对象,重新new一个类对象,然后将原始对象的数据copy到(用set方法或阿帕奇的copy方法都行) new出来的那个对象中就好了,没听明白可以继续追问
JAVA 多级list嵌套在对象中,如何转化为JSON格式
fastjson-1.1.2.jar 可以用这个jar包实现 java里面 json字符串和对象之间的互转
使用spray json的一点小经验
java里面的fastjson,gson,和Jackson是我最熟悉的json序列化框架,用起来没什么问题,接触了scala之后,我看到很多项目使用sprayjson,尤其是akka相关的项目,使用特别多,因为刚接触scala,它的伴生对象和implicit隐式语义会让新手使用spray json的时候,有一点点困惑。
简单说就是json字符串和对象的互转,java里面的对象一般是指bean,有的也叫pojo,scala里面一般指case class的对象。
还有很多框架不提供到bean的转换,而是直接转成JsonObject和JsonArray对象,有的同时支持,比如fastJson,spray json 同样也都支持,基础类叫做JsonValue,具体的还有JSNumber、JSString、JSBoolean等更详细的数据类型,原理其实跟其它java的json框架没有太大的区别
一个json串,调用 parseJson 方法
一个scala对象调用 toJson 方法
都可以转化为一个spray json的语法树对象
这个语法树对象可以打印成json字符串,也可以转化为一个scala对象
转为json字符串:
prettyPrint // or .compactPrint
转为对象 val myObject = jsonAst.convertTo
***隐藏网址***
具体的参考这个文档即可
调用方式都是死的,无非是convertTo,parseJson,toJson,但是具体怎么转,是需要协议的,框架本身内置了一大堆协议,用于scala基础对象类型的转化,而我们自定义的case class或者class需要我们自己实现转化的方式,这个是我们需要编码的地方。
对于没有显示声明伴生对象的情况,sprayjson给你准备了很多 jsonFormatX,x对应你的case class参数个数,比如
如果有22个参数,那就是jsonFormat22,这些框架提供的jsonFormatX使用的话,需要导入spray.json.DefaultJsonProtocol_,这也是scala隐式的特点
如果显示声明了伴生对象,那么就不能直接 jsonFormat4(Color) 这样写了,上面这个例子里,如果声明了Color伴生对象,那么 jsonFormat4(Color) 里的Color会被理解成Color对象,这时候需要我们提供伴生对象的apply方法,要写成这样
普通class即非case class的情况,多数用到RootJsonFormat,这时候需要我们重写read,write方法,即JSValue和class对象的转换关系
例如:
更复杂的用法,后面陆续补充

更多文章:
跷二郎腿太低好吗?想要通过贴墙站改正二郎腿影响的话,有哪些要点需要注意
2026年10月11日 05:10
易语言点击js按钮(易语言网页填表怎样点击链接为“javascript:void(0)“的按钮)
2026年10月11日 03:00
compare with造句(用compared with和compared to造句)
2026年10月10日 23:30
tensorflow与keras对应版本(为什么tensorflow2.8没有keras)
2026年10月10日 22:10
maven仓库jar网站(如何在maven仓库中添加jar包)
2026年10月10日 19:50





