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.mzph.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