「java对象互转」java对象转型

博主:adminadmin 2023-03-21 03:23:07 559

本篇文章给大家谈谈java对象互转,以及java对象转型对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

json和java对象相互转换的插件工具有哪些

json使用前必须先引入json的相关jar包,我这里用的是json-lib-2.4-jdk15.jar这个版本的jar包。如果大家没有的话可以直接在我这里下载:点击打开链接

导入完jar就可以正式开始开发了,这里先看一个对象转json的例子:

对象的具体内容如下:

[java] view plain copy

package myapi.json.demo.entity;

import java.util.List;

public class MyBean {

private String Id;

private String Name;

private List CardNum;

public MyBean(String id, String name, List cardNum) {

super();

Id = id;

Name = name;

CardNum = cardNum;

}

“java 基类对象与子类对象如何相互转换”

子类对象可以调用基内的所有方法,转换可以直接强制转换就好。

比如B类继承A类

A a=(A)new B();

反之亦然

使用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[MyObjectType]

具体的参考这个文档即可

调用方式都是死的,无非是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对象的转换关系

例如:

更复杂的用法,后面陆续补充

java对象互转的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java对象转型、java对象互转的信息别忘了在本站进行查找喔。