网站后台文章添加成功 不显示,公司设计网站建设合同,wordpress微信分享插件,北京 网站建设 招标信息moxy json介绍最近#xff0c;我发布了如何利用EclipseLink JAXB#xff08;MOXy#xff09;的JSON绑定来创建RESTful服务。 在本文中#xff0c;我将演示在客户端利用MOXy的JSON绑定有多么容易。 MOXy作为您的JAX-RS JSON提供程序–服务器端 MOXy作为您的JAX-RS JSON提供… moxy json介绍 最近我发布了如何利用EclipseLink JAXBMOXy的JSON绑定来创建RESTful服务。 在本文中我将演示在客户端利用MOXy的JSON绑定有多么容易。 MOXy作为您的JAX-RS JSON提供程序–服务器端 MOXy作为您的JAX-RS JSON提供程序–客户端 URI 这篇文章将重点介绍我们在上一篇文章中声明的服务中的以下URI。 以下呼叫将返回居住在“任何城镇”的客户列表。 http://localhost:8080/CustomerService/rest/customers/findCustomersByCity/Any%20Town Java SE客户端API 在第一个示例中我们将使用标准的Java SE 6 API。 一些有趣的注意事项 MOXy可以直接封送第35行和解封第28行往返于JSON数组的集合而无需包装对象。 MOXy没有编译时间依赖性它是运行时依赖性。 eclipselink.media-type属性用于在unmarshaller第25行和marshaller第33行上启用JSON绑定。 eclipselink.json.include-root属性用于指示XmlRootElement批注在JSON绑定中应被忽略第26和34行。 package example;import java.io.InputStream;
import java.net.*;
import java.util.List;
import javax.xml.bind.*;
import javax.xml.transform.stream.StreamSource;
import org.example.Customer;public class JavaSEClient {private static final String MEDIA_TYPE application/json;public static void main(String[] args) throws Exception {String uri http://localhost:8080/CustomerService/rest/customers/findCustomersByCity/Any%20Town;URL url new URL(uri);HttpURLConnection connection (HttpURLConnection) url.openConnection();connection.setRequestMethod(GET);connection.setRequestProperty(Accept, MEDIA_TYPE);JAXBContext jc JAXBContext.newInstance(Customer.class);Unmarshaller unmarshaller jc.createUnmarshaller();unmarshaller.setProperty(eclipselink.media-type, MEDIA_TYPE);unmarshaller.setProperty(eclipselink.json.include-root, false);InputStream xml connection.getInputStream();ListCustomer customers (ListCustomer) unmarshaller.unmarshal(new StreamSource(xml), Customer.class).getValue();connection.disconnect();Marshaller marshaller jc.createMarshaller();marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);marshaller.setProperty(eclipselink.media-type, MEDIA_TYPE);marshaller.setProperty(eclipselink.json.include-root, false);marshaller.marshal(customers, System.out);}} 输出量 以下是运行Java SE客户端的输出。 对于那些可能使用JAXB JSR-222 实现和Jettison之类的东西来产生/使用JSON的人以下是一些需要注意的有趣事项 MOXy将集合呈现为JSON数组。 MOXy正确表示数字值而不带引号第26行。 MOXy用方括号正确地包围了大小为1的集合第28和32行。 [ {address : {city : Any Town,id : 1,street : 1 A Street},firstName : Jane,id : 1,lastName : Doe,phoneNumbers : [ {id : 2,num : 555-2222,type : HOME}, {id : 1,num : 555-1111,type : WORK} ]
}, {address : {city : Any Town,id : 10,street : 456 Another Road},firstName : Sue,id : 10,lastName : Jones,phoneNumbers : [ {id : 10,num : 555-3333,type : WORK} ]
} ] 泽西岛客户端API JAX-RS 2.0 JSR-339 正在致力于标准化客户端API。 使用JAX-RS 1.0许多实现提供了自己的版本。 以下是使用Jersey提供的客户端API的示例。 请注意我们如何利用与服务器端完全相同的MessageBodyReader / Writer 第14行将MOXy称为JAX-RS JSON提供程序–服务器端 。 我还指定了LoggingFilter 第17行因此我们可以仔细查看该消息。 package example;import java.util.List;
import org.example.Customer;
import org.example.MOXyJSONProvider;
import com.sun.jersey.api.client.*;
import com.sun.jersey.api.client.config.*;
import com.sun.jersey.api.client.filter.LoggingFilter;public class JerseyClient {public static void main(String[] args) {ClientConfig cc new DefaultClientConfig();cc.getClasses().add(MOXyJSONProvider.class);Client client Client.create(cc);client.addFilter(new LoggingFilter());WebResource resource client.resource(http://localhost:8080/CustomerService/rest/customers);ListCustomer customers resource.path(/findCustomersByCity/Any%20Town).accept(application/json).get(new GenericTypeListCustomer(){});for(Customer customer : customers) {System.out.println(customer.getFirstName());}}} 输出量 以下是运行Jersey客户端的输出。 14-Mar-2012 4:08:12 PM com.sun.jersey.api.client.filter.LoggingFilter log
INFO: 1 * Client out-bound request
1 GET http://localhost:8080/CustomerService/rest/customers/findCustomersByCity/Any%20Town
1 Accept: application/json
1 14-Mar-2012 4:08:12 PM com.sun.jersey.api.client.filter.LoggingFilter log
INFO: 1 * Client in-bound response
1 200
1 Transfer-Encoding: chunked
1 Date: Wed, 14 Mar 2012 20:08:12 GMT
1 Content-Type: application/json
1 X-Powered-By: Servlet/3.0 JSP/2.2 (GlassFish Server Open Source Edition 3.1.1 Java/Oracle Corporation/1.7)
1 Server: GlassFish Server Open Source Edition 3.1.1
1
[{address : {city : Any Town, id : 1, street : 1 A Street}, firstName : Jane, id : 1, lastName : Doe, phoneNumbers : [{id : 1, num : 555-1111, type : WORK}, {id : 2, num : 555-2222, type : HOME}]}, {address : {city : Any Town, id : 10, street : 456 Another Road}, firstName : Sue, id : 10, lastName : Jones, phoneNumbers : [{id : 10, num : 555-3333, type : WORK}]}]Doe, Jane
Jones, Sue 进一步阅读 如果您喜欢这篇文章那么您可能也会对以下内容感兴趣 RESTful服务 MOXy作为您的JAX-RS JSON提供程序–服务器端 创建一个RESTful服务 第1部分–数据库 第2部分–将数据库映射到JPA实体 第3部分–将JPA实体映射到XML使用JAXB 第4部分– RESTful服务 第五部分–客户 JAX-RS服务中的MOXy的XML元数据 JSON绑定 使用EclipseLink MOXy进行JSON绑定– Twitter示例 绑定到JSON和XML –地理编码示例 参考 MOXy作为您的JAX-RS JSON提供程序– Java XML和JSON绑定博客中JCG合作伙伴 Blaise Doughan的客户端 。 翻译自: https://www.javacodegeeks.com/2012/04/moxy-as-your-jax-rs-json-provider_18.htmlmoxy json介绍