我很高兴地宣布我的第一个开源项目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

Java与iOS对话:Java对象与Apple plist序列化相关推荐

  1. ios plist 国际化_Java与iOS对话:Java对象与Apple plist序列化

    ios plist 国际化 我很高兴地宣布我的第一个开源项目java-plist-serializer可以帮助您将Java(尤其是基于Spring的应用程序)与iOS应用程序集成在一起.   背景 我 ...

  2. java集成ios内购\与ios退款通知处理

    使用ios内购,需在项目数据库建立虚拟币相关表(虚拟币余额表.充值面额表.充值订单表等)上代码 苹果IAP内购验证工具类 IosVerifyUtil import javax.net.ssl.*; i ...

  3. IOS、java支持DES加密

    最近在考虑数据加密方面的需求,所以对数据加密简单的看了一下,当然不是看的原理,只是看看怎么能够实现.现在我们需要实现的是移动端和后台(java)数据加解密的配合,开始的时候考虑的使用RSA,因为RSA ...

  4. Java进阶之深入理解对象与垃圾回收机制常见面试题

    内存泄漏和内存溢出辨析 内存溢出:实实在在的内存空间不足导致: 内存泄漏:该释放的对象没有释放,多见于自己使用容器保存元素的情况下. 常量池与String 常量池 常量池有很多说法,包括运行时常量池. ...

  5. 如何用Java实现智能对话机器人

    如何用Java实现智能对话机器人 前言 这个时代人工智能如此火爆,身为圈内人我们应该多少对他有些了解,为了靠他近一些今天我们动手用Java实现一个智能聊天机器人,当然此处我们需要依赖图灵机器人的Api ...

  6. Java学习笔记7-面向对象(续)

    一个国家有很多省,省又分为市,市里面又分为县或者镇,省与省之间又有很多不同的特色.之所以这样去分就是因为好区分,便于管理,这种原理和Java里面的包(package)很相似. 1.package(包) ...

  7. 微信登陆接入(Android/IOS(swift)/Java后台)

    本文章仅作为个人笔记 微信Android接入指南,需要登陆后查看(开放平台->资源中心->开发资源->移动应用->接入指南) 微信IOS接入指南,需要登陆后查看(开放平台-&g ...

  8. 【Java】ios应用开发证书申请流程

    [Java]ios应用开发证书申请流程 步骤 下面是生成钥匙串文件流程 打开mac电脑的启动台,找到钥匙串 这个就是在mac电脑上得到的钥匙串文件 下面是开发者平台申请流程 登录iOS开发者平台:[i ...

  9. 快速带你分清java内存结构,java内存模型,java对象模型和jvm内存结构!

    现如今你是否有这样的感觉,无论生活还是学习,节奏都是非常的快,每天面对海量的知识信息,自己感觉都要hold不住了,每天打开微信公众号,是不是发现有几十条未读,无论是技术文章还是其他类型的文章,我们大多 ...

最新文章

  1. Visual Studio 2008 每日提示(十四)
  2. 一个python发包的脚本
  3. IHS Infonetics:网络运营商进军SDN
  4. 前端学习(1159):对象结构02
  5. python怎么输入下一行_python在指定行前插入一行
  6. js,css压缩工具
  7. Tomcat Session管理分析
  8. CentOS7.3 本地环境安装
  9. 数值分析实验四 最小二乘法曲线拟合
  10. 怎样清理计算机c盘东西,怎样清理电脑c盘无用的东西(电脑c盘垃圾清理技巧)...
  11. [manacher][hash]Magic Spells 2022牛客多校第9场 G
  12. Python3中的可迭代类型
  13. 第2章 C语言的赋值运算符、复合运算符与逗号运算符 (十一)
  14. Python多值函数
  15. 【转】Kbps、KB、Mbps单位换算
  16. ffmpeg----avfifo.h
  17. Word 2016 撰写论文(4): 批量修改MathType公式字体大小
  18. 什么是BFC?它的触发条件有哪些?
  19. 爱思服务器shsh文件类型,使用爱思助手备份/上传SHSH
  20. 高清巧克力图片按Packshotcreator

热门文章

  1. nacos启动失败:org.springframework.boot.web.server.WebServerExceptio
  2. netsuite 数据集成_Java中带有NetSuite数据实体的对象关系映射(ORM)
  3. vaadin教程_Vaadin教程
  4. 微服务pact测试框架_消费者驱动的Pact和Spring Boot测试
  5. java面试题2014_Java生态系统– 2014年我的5大亮点
  6. junit测试报告生成_这是东西:jUnit:动态测试生成
  7. 49自动化测试中最常见的硒异常
  8. github和maven_在github上托管Maven存储库(包含源代码和javadoc)
  9. 参数化测试 junit_JUnit中的参数化测试运行器
  10. hibernate自动配置_Hibernate自动冲洗的黑暗面