Java與iOS對話:Java對象與Apple plist序列化

我很高興地宣布我的第一個開源項目java-plist-serializer可以幫助您將Java(尤其是基于Spring的應用程序)與iOS應用程序集成。 ?
背景
我正在將Java Webapp作為后端并且客戶端是iOS設備的項目。 最近,我收到了創建Web服務的任務,該服務返回plistiOS中使用的Property List數據格式)作為響應。 為什么選擇plist而不選擇JSON或經典XML? 如果您必須針對iOS <5.0進行開發,則沒有本機類可反序列化JSON。 核心iOS庫支持“屬性列表”格式,因此反序列化為NSDictionary超級高效。
很少有plist –與Java有關的庫,但是每個庫都需要做大量的手工工作,并將Java對象逐步重寫為Apple NS *類的Java等效類。 我認為沒有人喜歡這種任務。 那就是為什么我開發了一個庫,用于以類似于XStream XML序列化的方式將Java對象序列化為Plist。 ?

java-plist-serializer

java-plist-serializer是托管在Github上的開源項目,有助于開發Java應用程序和iOS應用程序之間的通信。

  • 不依賴于任何與XML相關的庫
  • @PlistIgnore , @PlistAlias和命名策略可定制的輸出
  • 線程安全–可以在項目中用作單例
  • 可擴展–可以輕松添加其他對象的處理程序
  • PlistView提供的Spring Framework集成

用法

庫的核心是PlistSerializerImpl 。 為了將對象序列化為plist,您必須創建PlistSerializerImpl的實例并調用序列化方法之一。 例如:

輸入類別:

public class Post {private String title;private Integer views = 0;private List<Comment> comments = new ArrayList<Comment>();private Author author;public Post(Author author, String title, Integer views) {this.title = title;this.views = views;this.author = author;}
}public class Comment {private String content;private String author;public Comment(String author, String content) {this.content = content;this.author = author;}
}public class Author {private String name;
}

創建這些類的對象,并plistSerializer.toXmlPlist方法

Post post = new Post(new Author("jason bourne"), "java-plist-serializer introduction", 9);
post.addComment(new Comment("maciejwalkowiak", "first comment"));
post.addComment(new Comment("john doe", "second comment"));PlistSerializerImpl plistSerializer = new PlistSerializerImpl();
String xml = plistSerializer.toXmlPlist(post);

xml變量將包含:

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"><dict><key>author</key><dict><key>name</key><string>jason bourne</string></dict><key>comments</key><array><dict><key>author</key><string>maciejwalkowiak</string><key>content</key><string>first comment</string></dict><dict><key>author</key><string>john doe</string><key>content</key><string>second comment</string></dict></array><key>title</key><string>java-plist-serializer introduction</string><key>views</key><integer>9</integer></dict>
</plist>

Spring框架集成

為了返回plist作為Spring MVC控制器的響應,您可以使用擴展AbstractView的 PlistView 。

有幾種方法可以配置Spring MVC。 最容易理解的PlistView用法示例:

@Controller
public class BlogController {@RequestMapping(value = "/loadBlogPost", method = RequestMethod.GET)public ModelAndView loadBlogPost() {Post post = new Post(new Author("jason bourne"), "java-plist-serializer introduction", 9);post.addComment(new Comment("maciejwalkowiak", "first comment"));post.addComment(new Comment("john doe", "second comment"));ModelMap model = new ModelMap();model.addAttribute("RESULT", notification);return new ModelAndView(new PlistView(), model);}
}

更詳細的文檔可以在項目的github頁面上找到

結論

隨意叉,延伸。 如果您發現任何問題,請在github上報告。

參考: Java與iOS的對話:來自Java 伙伴JCG合作伙伴 Maciej Walkowiak(來自Software Development Journey博客)的Java對象與Apple plist序列化 。


翻譯自: https://www.javacodegeeks.com/2012/07/java-talking-to-ios-java-objects-to.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/371930.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/371930.shtml
英文地址,請注明出處:http://en.pswp.cn/news/371930.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

web.cofing(新手必看)

花了點時間整理了一下ASP.NET Web.config配置文件的基本使用方法。很適合新手參看&#xff0c;由于Web.config在使用很靈活&#xff0c;可以自定義一些節點。所以這里只介紹一些比較常用的節點。 <?xml version"1.0"?> <!--注意: 除了手動編輯此文件以外&…

MIPS下CPU和RAM的數據流動情況詳解

這是計算機硬件間的數據路徑&#xff08;即數據流動的路徑&#xff09;&#xff0c;下面將較詳細分析此圖&#xff1a; PC&#xff08;program counter&#xff0c; 程序計數器&#xff09;是一個用于記錄當前計算機正在執行的指令的地址的寄存器&#xff08;register&#xff…

計算機亂程序怎么辦,我的電腦程序亂了怎么辦

我的電腦程序亂了&#xff0c;想用光盤恢復一下系統的修復安裝方法第一種方法&#xff1a;1、點擊“開始”菜單&#xff0c;點擊“運行”2、輸入CMD回車3、輸入命令SFC/SCANNOW4、插入系統光盤系統會自動將硬盤中的系統文件于系統盤中的文件比較并進行修復如果不行&#xff0c;…

【計算機網絡】網絡層——IP協議

目錄 一. 基本概念 二. 協議報文格式 三. 網段劃分 1. 第一次劃分 2. CIDR方案 3. 特殊的IP地址 四. IP地址不足 1. 私有IP和公網IP 2. DHCP協議 3. 路由器 4. NAT技術 內網穿透(NAT穿透) 五. 路由轉發 路由表生成算法 結束語 一. 基本概念 IP指網絡互連協議…

完整的Web應用程序Tomcat JSF Primefaces JPA Hibernate –第2部分

托管豆 這篇文章是本教程第1部分的繼續。 在“ com.mb”包中&#xff0c;您將需要創建以下類&#xff1a; package com.mb;import org.primefaces.context.RequestContext;import com.util.JSFMessageUtil;public class AbstractMB {private static final String KEEP_DIALOG…

P1014 Cantor表

洛谷 p1014 題目描述 現代數學的著名證明之一是Georg Cantor證明了有理數是可枚舉的。他是用下面這一張表來證明這一命題的&#xff1a; 1/1 1/2 1/3 1/4 1/5 … 2/1 2/2 2/3 2/4 … 3/1 3/2 3/3 … 4/1 4/2 … 5/1 … … 我們以Z字形給上表的每一項編號。第一項是1/1&#xff…

dvd管理系統

>>>>>>>>>>>>>>>>>>>> 語言&#xff1a;java 工具&#xff1a;eclipse 時間&#xff1a;2016.12.1 >>>>>>>>>>>>>>>>>>>> 一代代碼&#xff1a; 1 …

佳能2900打印機與win10不兼容_佳能RF 1.4、RF 2增倍鏡與RF 100500mm L IS USM并不完全兼容...

據佳能官方透露&#xff0c;佳能RF 1.4、RF 2增倍鏡與RF 100-500mm F4.5-7.1 L IS USM鏡頭并不完全兼容。在安裝使用兩款增倍鏡時&#xff0c;用戶需將RF 100-500mm鏡頭變焦環的變焦位置移動到超過300mm的遠攝區域。而在搭配增倍鏡后&#xff0c;鏡頭變焦范圍將限定在300-500mm…

縣級的圖書館計算機管理員,圖書館管理員的崗位職責

圖書館管理員的崗位職責導語&#xff1a;在領導的命令下&#xff0c;緊緊圍繞學校總體工作要求&#xff0c;牢固樹立全心全意為教學及教科研第一線服務的思想&#xff0c;工作主動熱情&#xff0c;努力做好管理育人的工作。圖書館管理員崗位職責&#xff1a;1、每學期認真制訂切…

使用Java快速入門的Apache Thrift

Apache Thrift是由facebook創建的RPC框架&#xff0c;現在它是一個Apache項目。 Thrift可讓您在不依賴語言的定義文件中定義數據類型和服務接口。 該定義文件用作編譯器的輸入&#xff0c;以生成用于構建通過不同編程語言進行通信的RPC客戶端和服務器的代碼。 您也可以參考Thri…

Windows/Linux安裝python2.7,pycharm和pandas——《利用Python進行數據分析》

一、Windows下&#xff08;兩種方法&#xff09; 1. 安裝Python EDP_free并安裝pandas ① 如果你沒有安裝python2.7&#xff0c;可以直接選擇安裝Python EDP_free&#xff0c;然后再安裝pandas等包就行 &#xff1a; Python EDP_free 網址&#xff1a; http://epdfree-7-3-2.…

Python基礎類型

1. 列表、元組操作 列表是我們最以后最常用的數據類型之一&#xff0c;通過列表可以對數據實現最方便的存儲、修改等操作 定義列表 names [Alex,"Tenglan",Eric] 通過下標訪問列表中的元素&#xff0c;下標從0開始計數 >>> names[0] Alex >>> nam…

angular點擊按鈕彈出頁面_Win10提示“由于啟動計算機時出現了頁面文件配置問題”解決方法...

我們在使用Windows10系統的過程中&#xff0c;經常會遇到一些問題。近期有一個網友咨詢裝機之家小編&#xff0c;稱自己Windows10系統開機之后&#xff0c;彈出系統屬性對話框&#xff0c;提示“由于啟動計算機時出現了頁面文件配置問題”的問題&#xff0c;我們要如何解決呢&a…

計算機程序編程就業,計算機編程就業

為畢業生寫計算機編程就業提供計算機編程就業范文參考,涵蓋碩士、大學本科畢業論文范文和職稱論文范文&#xff0c;包括論文選題、開題報告、文獻綜述、任務書、參考文獻等&#xff0c;是優秀免費計算機編程就業網站。基于編程語言類課程教學方法的探討位把考查學生的編程能力也…

Spring集成–第1節– Hello World

Spring Integration的“ Hello World ” –考慮一個簡單的程序&#xff0c;以使用Spring Integration將“ Hello World”打印到控制臺&#xff0c;并在此過程中訪問一些企業集成模式概念 在進入程序本身之前&#xff0c;快速回顧一下消息傳遞概念將很有用–消息傳遞是一種集成樣…

正則表達式貪婪模式與懶惰模式

正則表達式貪婪匹配模式&#xff0c;對于初學者&#xff0c;往往也很容易出錯。有時候需要匹配一個段代碼內容&#xff0c;發現匹配與想要不一致。發現原來&#xff0c;跟貪婪模式有關系。如下&#xff0c;我們看下例子&#xff1a; 什么是貪婪模式 字符串有: “<h3>abd&…

stm32 薄膜鍵盤原理_市面上的筆記本鍵盤優缺點解析,看完秒懂

大家在選購電腦時&#xff0c;很多人的關注重點都是筆記本的配置好不好、外觀設計酷不酷和電池續航能力強不強&#xff0c;對電腦鍵盤往往不會太在意&#xff0c;其實一個好的電腦鍵盤也可以幫助你提高工作效率&#xff0c;特別對于小編這樣的文字工作者&#xff0c;如果鍵盤手…

計算機等級考試心得體會,計算機等級考試心得體會(2)

估計以后的考試也可能略有變化&#xff0c;即逐漸增加使用命令的條數。由于該內容變化小&#xff0c;考生應當練習到純熟的境地&#xff0c;在考試時用盡可能少的時間來做這部分內容&#xff0c;以使其他內容有更多的時間。六題能做出五題即可&#xff0c;有一題一時想不起&…

Web開發框架–第1部分:選項和標準

在我的公司&#xff0c;我們正在評估未來幾年將使用哪種Web開發框架。 自上次評估以來&#xff0c;我們一直在使用由Struts 2驅動的Java應用服務器作為MVC&#xff0c;將Tiles作為模板引擎&#xff0c;將jQuery用于Javascript awesomennes&#xff0c;將DWR用于AJAX調用&#x…

增加一個類的功能可以采用繼承或者代理模式或者裝飾者模式

增加一個類的功能有3種辦法&#xff1a; 1.繼承 2.代理模式 3.裝飾者模式轉載于:https://www.cnblogs.com/panxuejun/p/6127837.html