我目前正在将JAXB用于我正在从事的项目,并希望将我的库存档xml转换为存档json,以在我的项目中执行任务.我以为我会使用Jettison,因为它实际上可以与JAXB一起使用,所以它看起来像是easier to implement.但是,查看不包含Jettison的Older benchmarks,我发现Kryo生成的文件更小,并且序列化和反序列化的速度比某些替代方法更快.

谁能告诉我主要的不同之处,否则我可以将Jettison与Kryo的堆叠方式,特别是对于诸如Android应用程序之类的未来项目而言.

编辑:

我想我正在寻找产生较小文件并且运行更快的文件.因为我不打算只处理文件而只读取文件,所以会牺牲人类的可读性

解决方法:

由于您已经建立了JAXB映射并将XML转换为JSON,因此您可能会对EclipseLink JAXB(MOXy)感兴趣,它使用相同的JAXB元数据提供了对象到XML和对象到JSON的映射.

顾客

下面是带有JAXB批注的示例模型.

package forum11599191;

import java.util.List;

import javax.xml.bind.annotation.*;

@XmlRootElement

@XmlAccessorType(XmlAccessType.FIELD)

public class Customer {

@XmlAttribute

private int id;

private String firstName;

@XmlElement(nillable=true)

private String lastName;

private List email;

}

jaxb.properties

javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory

input.xml

Jane

jdoe@example.com

演示版

以下演示代码将从XML中填充对象,然后输出JSON.请注意,MOXy上没有编译时间相关性.

package forum11599191;

import java.io.File;

import javax.xml.bind.*;

public class Demo {

public static void main(String[] args) throws Exception {

JAXBContext jc = JAXBContext.newInstance(Customer.class);

// Unmarshal from XML

Unmarshaller unmarshaller = jc.createUnmarshaller();

File xml = new File("src/forum11599191/input.xml");

Customer customer = (Customer) unmarshaller.unmarshal(xml);

// Marshal to JSON

Marshaller marshaller = jc.createMarshaller();

marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);

marshaller.setProperty("eclipselink.media-type", "application/json");

marshaller.marshal(customer, System.out);

}

}

JSON输出

以下是运行演示代码的输出.

{

"customer" : {

"id" : 123,

"firstName" : "Jane",

"lastName" : null,

"email" : [ "jdoe@example.com" ]

}

}

关于输出的一些注意事项:

>由于id字段是数字类型,因此将其编组为JSON,且不带引号.

>即使id字段是使用@XmlAttribute映射的,在JSON消息中也没有对此的特殊指示.

> email属性的大小为1,这在JSON输出中正确表示.

> xsi:nil机制用于指定lastName字段具有null值,该值已转换为JSON输出中的正确null表示形式.

欲获得更多信息

标签:serialization,deserialization,kryo,json,java

来源: https://codeday.me/bug/20191101/1980775.html

java jettison_java-Jettison或Kryo相关推荐

  1. avro和java原生序列化的区别,java原生序列化和Kryo序列化性能比较

    简介 最近几年,各种新的高效序列化方式层出不穷,不断刷新序列化性能的上限,最典型的包括: 专门针对Java语言的:Kryo,FST等等 跨语言的:Protostuff,ProtoBuf,Thrift, ...

  2. 【java】java原生序列化和Kryo序列化性能实例对比分析

    1.美图 2.概述 最近几年,各种新的高效序列化方式层出不穷,不断刷新序列化性能的上限,最典型的包括: 专门针对Java语言的:Kryo,FST等等 跨语言的:Protostuff,ProtoBuf, ...

  3. java jettison_java – 使用Jettison进行JSON解析

    我试图使用Jettison解析JSON对象. 这是我正在使用的代码 String s ="{\"appUsage\":[{\"appName\":\& ...

  4. java jettison_java - 使用Jettison进行JSON解析 - 堆栈内存溢出

    如果您最终正在寻找使用JAXB(JSR-222)实现与JSON交互的方法,那么以下是使用MOXy完成它的方法. Jettison是一个有趣的库,但是你会遇到一些问题: 演示 仅使用标准Java SE ...

  5. java jettison_Java常用Json库性能对比

    Java对于处理JSON数据的序列化与反序列化目前常用的类库有Gson.FastJSON.Jackson.jettison以及json-lib.在这里我们将对这些类库在json序列化与反序列化方面的性 ...

  6. 在Dubbo中使用高效的Java序列化(Kryo和FST)

    作者:沈理 文档版权: Apache 2.0许可证 署名-禁止演绎 完善中-- TODO 生成可点击的目录 目录 序列化漫谈 启用Kryo和FST 注册被序列化类 无参构造函数和Serializabl ...

  7. kryo java_优化Java序列化– Java,XML,JSON,Kryo,POF

    kryo java 也许我很天真,但是我一直认为Java序列化肯定是将Java对象序列化为二进制形式的最快,最有效的方法. 毕竟Java是第7个主要发行版,所以这不是新技术,而且由于每个JDK似乎都比 ...

  8. 优化Java序列化– Java,XML,JSON,Kryo,POF

    也许我很天真,但是我一直认为Java序列化肯定是将Java对象序列化为二进制形式的最快,最有效的方法. 毕竟Java是第7个主要发行版,所以这不是新技术,并且由于每个JDK似乎都比上一个快,因此我错误 ...

  9. 带有RESTEasy + JAXB + Jettison的JSON示例

    RESTEasy使用Jettison JSON库在JSON之间来回映射JAXB注释对象. 在本教程中,我们向您展示如何将带​​有JAXB注释的对象转换为JSON格式并将其返回给客户端. 杰克逊(Jac ...

最新文章

  1. JQ 全选后获取选中的值_为什么在PBI中还需要切片器之三:Excel切片器之度量值切换...
  2. ThreadLocal 原理 以及设计思想
  3. 让AI说话告别三观不正,OpenAI只用80个文本就做到了
  4. python包的中 _init _.py文件介绍
  5. CSRF Failed: CSRF token missing or incorrect.
  6. java ftp上传超时_java - Java FTP连接超时 - 堆栈内存溢出
  7. Codevs 1025 选菜
  8. sqlachemy入门基础手册
  9. php学习去哪,php可以从哪里学习
  10. 标签地址src路径拼接_第二十四天HTML一些常见的标签
  11. 源码部署Apache和shell脚本安装
  12. Shader初级(纹理坐标篇)
  13. 【测试用例练习】十、微信朋友圈点赞 和发红包 测试用例
  14. 为了治好拖延症,我祭出了这个自虐的项目,把我搞的卧槽卧槽的
  15. Hadoop集群配置
  16. 斐波那契数列(C/C++)
  17. 大数据与云计算技术---(一)hadoop大数据平台
  18. 自动控制原理笔记(5)——线性系统的根轨迹法
  19. 谷歌翻译 网页嵌入代码_在网页上嵌入Google地图
  20. Centos7下joshua6.0.5完整的安装过程

热门文章

  1. 【转载】池建强--趣谈个人建站
  2. 芋道源码的周八(2018.01.14)
  3. [词性] 十六、介词 6 [ inside ] [ like ] [ near ] [ of ] [ off ] [ past ] [ around ]
  4. 【JavaScript高级05】JavaScript第二大神兽:闭包
  5. 什么是接口测试?这篇文章让你明白
  6. 深度学习代码入门test2_alexnet
  7. 算法讲解:二分图匹配
  8. mysql数据库修改列排序规则_更改数据库排序规则
  9. ps语义分割_图像语义分割训练经验总结--图像语义分割
  10. 超实用的7种 pytorch 网络可视化方法,进来收藏一波