日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

moxy json介绍_MOXy作为您的JAX-RS JSON提供程序–客户端

發(fā)布時(shí)間:2023/12/3 javascript 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 moxy json介绍_MOXy作为您的JAX-RS JSON提供程序–客户端 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

moxy json介紹

最近,我發(fā)布了如何利用EclipseLink JAXB(MOXy)的JSON綁定來創(chuàng)建RESTful服務(wù)。 在本文中,我將演示在客戶端利用MOXy的JSON綁定有多么容易。
  • MOXy作為您的JAX-RS JSON提供程序–服務(wù)器端
  • MOXy作為您的JAX-RS JSON提供程序–客戶端

URI

這篇文章將重點(diǎn)介紹我們?cè)谏弦黄恼轮新暶鞯姆?wù)中的以下URI。 以下呼叫將返回居住在“任何城鎮(zhèn)”的客戶列表。

http://localhost:8080/CustomerService/rest/customers/findCustomersByCity/Any%20Town

Java SE客戶端API

在第一個(gè)示例中,我們將使用標(biāo)準(zhǔn)的Java SE 6 API。 一些有趣的注意事項(xiàng):

  • MOXy可以直接封送(第35行)和解封(第28行)往返于JSON數(shù)組的集合,而無需包裝對(duì)象。
  • MOXy沒有編譯時(shí)間依賴性(它是運(yùn)行時(shí)依賴性)。
  • eclipselink.media-type屬性用于在unmarshaller(第25行)和marshaller(第33行)上啟用JSON綁定。
  • eclipselink.json.include-root屬性用于指示@XmlRootElement批注在JSON綁定中應(yīng)被忽略(第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();List<Customer> customers = (List<Customer>) 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);}}

輸出量

以下是運(yùn)行Java SE客戶端的輸出。 對(duì)于那些可能使用JAXB( JSR-222 )實(shí)現(xiàn)和Jettison之類的東西來產(chǎn)生/使用JSON的人,以下是一些需要注意的有趣事項(xiàng):

  • MOXy將集合呈現(xiàn)為JSON數(shù)組。
  • MOXy正確表示數(shù)字值而不帶引號(hào)(第26行)。
  • MOXy用方括號(hào)正確地包圍了大小為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 )正在致力于標(biāo)準(zhǔn)化客戶端API。 使用JAX-RS 1.0,許多實(shí)現(xiàn)提供了自己的版本。 以下是使用Jersey提供的客戶端API的示例。 請(qǐng)注意,我們?nèi)绾卫门c服務(wù)器端完全相同的MessageBodyReader / Writer (第14行,將MOXy稱為JAX-RS JSON提供程序–服務(wù)器端 )。 我還指定了LoggingFilter (第17行),因此我們可以仔細(xì)查看該消息。

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");List<Customer> customers = resource.path("/findCustomersByCity/Any%20Town").accept("application/json").get(new GenericType<List<Customer>>(){});for(Customer customer : customers) {System.out.println(customer.getFirstName());}}}

輸出量

以下是運(yùn)行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

進(jìn)一步閱讀

如果您喜歡這篇文章,那么您可能也會(huì)對(duì)以下內(nèi)容感興趣:

  • RESTful服務(wù)
    • MOXy作為您的JAX-RS JSON提供程序–服務(wù)器端
    • 創(chuàng)建一個(gè)RESTful服務(wù)
      • 第1部分–數(shù)據(jù)庫
      • 第2部分–將數(shù)據(jù)庫映射到JPA實(shí)體
      • 第3部分–將JPA實(shí)體映射到XML(使用JAXB)
      • 第4部分– RESTful服務(wù)
      • 第五部分–客戶
    • JAX-RS服務(wù)中的MOXy的XML元數(shù)據(jù)
  • JSON綁定
    • 使用EclipseLink MOXy進(jìn)行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.html

moxy json介紹

總結(jié)

以上是生活随笔為你收集整理的moxy json介绍_MOXy作为您的JAX-RS JSON提供程序–客户端的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。