moxy json介绍_MOXy的@XmlVariableNode – JSON模式示例

moxy json介绍

我们正在向EclipseLink MOXy添加从域模型生成JSON模式的 功能 。 为此,我们创建了一个新的变量节点映射。 在本文中,我将通过将Java模型映射到JSON模式来演示新的映射。

您可以使用每晚构建的EclipseLink 2.6.0进行尝试:

  • http://www.eclipse.org/eclipselink/downloads/nightly.php


JSON模式(input.json / Output)

以下是摘自http://json-schema.org/examples.html的“基本示例”。 请注意,该类型具有许多属性,但它们不会显示为JSON数组。 相反,它们显示为键入在属性名称上的单独的JSON对象。

{"title": "Example Schema","type": "object","properties": {"firstName": {"type": "string"},"lastName": {"type": "string"},"age": {"description": "Age in years","type": "integer","minimum": 0}},"required": ["firstName", "lastName"]
}

Java模型

以下是我们用于此示例的Java模型。

JsonSchema(存储在列表中的属性)

在JSON模式的Java表示中,我们有一个类,它具有Property对象的集合。 而不是集合的默认表示形式(请参阅: 绑定到JSON&XML –处理集合 ),我们希望每个Property以其名称作为键。 我们可以使用@XmlVariableNode批注进行此操作。 通过它,我们可以指定目标对象的字段/属性,该字段/属性应用作键。

package blog.variablenode.jsonschema;import java.util.*;
import javax.xml.bind.annotation.*;
import org.eclipse.persistence.oxm.annotations.XmlVariableNode;@XmlAccessorType(XmlAccessType.FIELD)
public class JsonSchema {private String title;private String type;@XmlElementWrapper@XmlVariableNode("name")public List<Property> properties;private List<String> required;}

JsonSchema(存储在地图中的属性)

在此版本的JsonSchema类中,我们将属性的类型从List <Property>属性更改为Map <String,Property> 。 注释保持不变,所不同的是,当@XmlVariableNode是在地图中使用的变量节点名称作为地图的关键。

package blog.variablenode.jsonschema;import java.util.*;
import javax.xml.bind.annotation.*;
import org.eclipse.persistence.oxm.annotations.XmlVariableNode;@XmlAccessorType(XmlAccessType.FIELD)
public class JsonSchema {private String title;private String type;@XmlElementWrapper@XmlVariableNode("name")public Map<String, Property> properties;private List<String> required;}

属性

为了防止将名称字段编组,我们需要使用@XmlTransient对其进行注释(请参见JAXB和Unmapped属性 )。

package blog.variablenode.jsonschema;import javax.xml.bind.annotation.*;@XmlAccessorType(XmlAccessType.FIELD)
public class Property {@XmlTransientprivate String name;private String description;private String type;private Integer minimum;}

示范代码

下面是一些示例代码,您可以用来证明一切正常。

package blog.variablenode.jsonschema;import java.util.*;
import javax.xml.bind.*;
import javax.xml.transform.stream.StreamSource;
import org.eclipse.persistence.jaxb.JAXBContextProperties;public class Demo {public static void main(String[] args) throws Exception {Map<String, Object> properties = new HashMap<String, Object>();properties.put(JAXBContextProperties.MEDIA_TYPE, "application/json");properties.put(JAXBContextProperties.JSON_INCLUDE_ROOT, false);JAXBContext jc = JAXBContext.newInstance(new Class[] {JsonSchema.class}, properties);Unmarshaller unmarshaller = jc.createUnmarshaller();StreamSource json = new StreamSource("src/blog/variablenode/jsonschema/input.json");JsonSchema jsonSchema = unmarshaller.unmarshal(json, JsonSchema.class).getValue();Marshaller marshaller = jc.createMarshaller();marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);marshaller.marshal(jsonSchema, System.out);}}

外部元数据

MOXy还提供了一个外部映射文档,使您可以为第三方对象提供元数据或为模型应用替代映射(请参阅:将对象映射到多个XML模式–天气示例 )。 以下是此示例的映射文档。

<?xml version="1.0"?>
<xml-bindingsxmlns="http://www.eclipse.org/eclipselink/xsds/persistence/oxm"package-name="blog.variablenode.jsonschema"xml-accessor-type="FIELD"><java-types><java-type name="JsonSchema"><java-attributes><xml-variable-node java-attribute="properties" java-variable-attribute="name"><xml-element-wrapper/></xml-variable-node></java-attributes></java-type><java-type name="Property"><java-attributes><xml-transient java-attribute="name"/></java-attributes></java-type></java-types>
</xml-bindings>

参考: 来自MOXy的@XmlVariableNode –来自我们的JCG合作伙伴 Blaise Doughan的JSON模式示例 ,位于Java XML&JSON Binding博客上。

翻译自: https://www.javacodegeeks.com/2013/06/moxys-xmlvariablenode-json-schema-example.html

moxy json介绍

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/348022.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java 切换后台程序_将 Android 程序切换到后台及从后台切换到前台实现

将 Android 程序切换到后台及从后台切换到前台实现有时候, 我们需要将自己的 Android 程序切换到后台运行, 在必要时, 将其切换到前台运行下面提供了一种实现方式, 首先需要引用三个单元:uses Androidapi.JNI.App,Androidapi.JNI.GraphicsContentViewText,Androidapi.Helpers;将…

使用Spock测试您的代码

Spock是针对Java和Groovy应用程序的测试和规范框架。 Spock是&#xff1a; 极富表现力 促进测试的给定/何时/然后语法 与大多数IDE和CI服务器兼容。 听起来不错&#xff1f; 通过快速访问Spock Web控制台&#xff0c;您可以非常快速地开始使用Spock。 当您有一个喜欢的小测…

i18n php_PHP国际化多语言的实现(非I18N)

PHP开发网站、系统会遇到需要支持多种语言的情况&#xff0c;这时候我们就需要国际化。一般都是推荐使用I18N&#xff0c;而使用I18N我们需要下载相应软件编辑PO文件&#xff0c;然后还要PHP的gettext扩展&#xff0c;有点小烦。下面介绍一种除了I18N以外&#xff0c;最常用的P…

php删除文见,php如何删除文件夹

php删除文件夹的方法&#xff1a;首先创建一个PHP示例文件&#xff1b;然后通过“function deldir($dir) {...}”删除目录下的文件并删除当前文件夹即可。php删除文件夹及其文件夹下所有文件function deldir($dir) {//先删除目录下的文件&#xff1a;$dhopendir($dir);while ($…

阿帕奇齿轮泵

Apache Gearpump是实时大数据流引擎。 它从2014年中期开始就在Intel上作为GitHub上的开源项目构想的&#xff0c;并于2016年3月8日进入Apache孵化。Gearpump的名称是对工程术语“齿轮泵”的指称&#xff0c;它是一个超级简单的泵&#xff0c;由只有两个齿轮&#xff0c;但是在流…

php网站标签加小图标,在htmltitle/title标签添加图标,网页title左边显示网页的logo图标...

如图在黑色所画圆之中显示一个图标&#xff1a;步骤一&#xff1a;在图片中显示图标&#xff0c;这里的图片只支持ico格式&#xff0c;需要转换图片格式.原始图像可以接受: .jpg .jpeg .gif .png等图像格式在这个网址http://www.php.cn/上传你的原始图片然后生成ico格式图标(百…

java bom json,JSON字符串带BOM头ufeff

调用三方接口返回值JSON字符串带BOM头"\ufeff"&#xff0c;JSON解析死活报错。我是用SpringBoot的RestTemplate调用三方接口的&#xff0c;一开始返回值我是用对象接收返回值&#xff0c;发现一直报错&#xff0c;我以为是RestTemplate的接收转换有问题&#xff0c;就…

hadoop 多节点集群_设置Apache Hadoop多节点集群

hadoop 多节点集群我们正在分享有关在基于Linux的机器&#xff08;多节点&#xff09;上安装Apache Hadoop的经验。 在这里&#xff0c;我们还将分享我们在各种故障排除方面的经验&#xff0c;并在将来进行更新。 用户创建和其他配置步骤– 我们首先在每个集群中添加一个专用的…

php 获取当前目录名称,PHP获取当前执行php文件名的代码

今天写表白墙时候的导航判断遇到的这个问题。我的解决思路是这样&#xff1a;判断当前的php文件名来确定导航条的哪块高亮。那php如何获取当前的url文件名呢&#xff1f;我是这样处理的 :shock:教程首先肯定是要获取当前页面URL的&#xff0c;在这里我们使用php的$_SERVER[PHP_…

在Java中解析JSON时如何忽略未知属性– Jackson @JsonIgnoreProperties注释示例

使用Jackson API在Java中解析JSON时的常见问题之一是&#xff0c;当您的JSON包含未知属性&#xff08;即您的Java类没有对应于所有JSON属性的所有字段&#xff09;时&#xff0c;该操作将失败。 例如&#xff0c;如果您正在使用REST Web服务中的JSON&#xff0c;并且明天他们在…

php界面设置编码格式,php设置编码格式的方法

php设置编码格式的方法发布时间&#xff1a;2020-08-15 11:02:56来源&#xff1a;亿速云阅读&#xff1a;78作者&#xff1a;小新这篇文章主要介绍php设置编码格式的方法&#xff0c;文中介绍的非常详细&#xff0c;具有一定的参考价值&#xff0c;感兴趣的小伙伴们一定要看完&…

php文件显示不完整,github文件显示不全

github仓库里面有的文件显示不全&#xff0c;具体看这里&#xff0c;在编辑文件时就能看到全部内容看了stackoverflow上类似的问题&#xff1a;Full file not displaying on GitHub?&#xff0c;然后又看了Dealing with line endings&#xff0c;还是没有解决。望解答&#xf…

单元测试 问题描述_单元测试技巧:创建描述性测试

单元测试 问题描述您的单元测试应尽可能具有描述性。 他们给您的反馈应该非常清楚&#xff0c;您甚至不必启动调试器&#xff0c;并一步一步地检查代码以检查局部变量。 为什么&#xff1f; 因为那需要时间&#xff0c;而且我们很懒&#xff0c;对吗&#xff1f; 为此&#xff…

java ftp获取文件夹大小,java 用FTPClient 下载文件时不显示总大小?解决方案

java 用FTPClient 下载文件时不显示总大小&#xff1f;FTPClient ftp new FTPClient();ftp.setControlEncoding("utf-8");OutputStream outputStream null;try {int reply;// 连接FTP服务器// 如果采用默认端口&#xff0c;可以使用ftp.connect(url)的方式直接连接…

php中数组生成下拉选项,php利用数组填充下拉列表框

这篇文章主要介绍了php使用数组填充下拉列表框的方法,涉及php操作数组的技巧,具有一定参考借鉴价值,需要的朋友可以参考下本文实例讲述了php使用数组填充下拉列表框的方法。具体实现方法如下&#xff1a;<?php $data array((object)array("titulo">"For…

同时使用传入和传出连接时,相互TLS身份验证存在Java问题

在大多数企业环境中&#xff0c;在应用程序之间的连接中使用某种形式的安全通信&#xff08;例如TLS或SSL&#xff09;。 在某些环境中&#xff0c; 相互&#xff08;双向&#xff09;身份验证也是一项非功能性要求。 有时将其称为双向SSL或双向TLS身份验证。 因此&#xff0c;…

matlab小波脊线,小波脊线提取,模极大值法。运行的结果不太对,代码有些地方我也没完全看懂...

本帖最后由 1393107100 于 2019-5-1 11:10 编辑clear,clcclose all%%%%%% 小波变换 %%%%%%%%%%%%%%%%fs1024;t1/fs:1/fs:1;f1100;f2200;f3300;scos(2*pi*f1*t.*(t>0&t<0.3))2*cos(2*pi*f2*t.*(t>0.3&t<0.8))3*sin(2*pi*f3*t.*(t>0.8&t<1));%sc…

php json追加500错误,在composer.json中添加了一个git地址;composer update 报错

在composer.json中添加了一个git地址&#xff1b;composer update 报错&#xff0c;不知道是什么原因导致的&#xff0c;如图&#xff1a;问题补充&#xff1a;在BAE包里面添加composer.json 后 重新composer updateYour requirements could not be resolved to an installable…

java 解析gson_使用Java和Google GSON解析ESPN API

java 解析gson在我的第一篇文章中&#xff0c;我将解释如何解析ESPN API。 可以在http://developer.espn.com/docs上找到API文档。 首先&#xff0c;您需要请求一个API密钥&#xff0c;然后您可以开始查询REST API以检索JSON响应。 在下面的示例中&#xff0c;我将简单查询在英…

matlab曲线拟合 最低点,Matlab曲线拟合 最小二乘法 polyfit【转】

曲线拟合已知离散点上的数据集 &#xff0c;即已知在点集 上的函数值 &#xff0c;构造一个解析函数(其图形为一曲线)使 在原离散点 上尽可能接近给定的值&#xff0c;这一过程称为曲线拟合。最常用的曲线拟合方法是最小二乘法&#xff0c;该方法是寻找函数 使得 最小。MATLAB函…