Java 完美解析.plist & 生成plist ,Android 解析.plist

soゝso 2018-04-15 23:53:17 7399

今天调试接口,是Apple的接口,格式是  plist  ,有点像  xml  ,但是不是  xml  的协议。开始找了几个网上现成的,测试都有问题。然后找到这个。测试完美解析。


  github  地址:https://github.com/3breadt/dd-plist

Java代码解析.plist

<dependency>
    <groupId>com.googlecode.plist</groupId>
    <artifactId>dd-plist</artifactId>
    <version>1.20</version>
</dependency>

直接摘取我解析的代码。对照看看。

//传入byte[]
NSObject xx = XMLPropertyListParser.parse(bytes);

//你要看你的是什么类型,直接强转
HashMap obj = (HashMap) xx.toJavaObject();

//获取节点
byte[] responseBody = (byte[]) obj.get("ResponseBody");
//GZIP解压
ByteArrayOutputStream out = new ByteArrayOutputStream();
ByteArrayInputStream in = new ByteArrayInputStream(responseBody);
try {
    GZIPInputStream ungzip = new GZIPInputStream(in);
    byte[] buffer = new byte[256];
    int n;
    while ((n = ungzip.read(buffer)) >= 0) {
        out.write(buffer, 0, n);
    }
} catch (IOException e) {
    log.error("解压失败",e);
}
//再次解析plist
NSObject body = XMLPropertyListParser.parse(out.toByteArray());
HashMap bodyMap = (HashMap) body.toJavaObject();
result.put("body",new Gson().toJson(bodyMap));

Android 代码解析.plist

您的属性列表文件放入项目文件夹res / raw中,将它们标记为资源文件。然后,您可以InputStream为该资源创建一个资源并将其传递给该资源PropertyListParser。

在这个例子中,你的属性列表文件被称为properties.plist。

try {
  InputStream is = getResources().openRawResource(R.raw.properties);
  NSDictionary rootDict = (NSDictionary)PropertyListParser.parse(is);
  //Continue parsing...
} catch(Exception ex) {
  //Handle exceptions...
}

创建.plist文件

//Creating the root object
NSDictionary root = new NSDictionary();

//Creation of an array of the length 2
NSArray people = new NSArray(2);

//Creation of the first object to be stored in the array
NSDictionary person1 = new NSDictionary();
//The NSDictionary will automatically wrap strings, numbers and dates in the respective NSObject subclasses
person1.put("Name", "Peter"); //This will become a NSString
//Use the Java Calendar class to get a Date object
Calendar cal = Calendar.getInstance();
cal.set(2011, 1, 13, 9, 28);
person1.put("RegistrationDate", cal.getTime()); //This will become a NSDate
person1.put("Age", 23); //This will become a NSNumber
person1.put("Photo", new NSData(new File("peter.jpg")));

//Creation of the second object to be stored in the array
NSDictionary person2 = new NSDictionary();
person2.put("Name", "Lisa");
person2.put("Age", 42);
person2.put("RegistrationDate", new NSDate("2010-09-23T12:32:42Z"));
person2.put("Photo", new NSData(new File("lisa.jpg")));

//Put the objects into the array
people.setValue(0, person1);
people.setValue(1, person2);

//Put the array into the property list
root.put("People", people);

//Save the propery list
PropertyListParser.saveAsXML(root, new File("people.plist"));

支持:

  • 读取/写入文件,流或字节数组的属性列表
  • 在属性列表格式之间转换
  • 属性列表内容作为NeXTSTEP环境中的对象提供(NSDictionary,NSArray,NSString等)
  • 将本机java数据结构序列化为属性列表对象
  • 从属性列表对象反序列化为本机Java数据结构

但是好像toBean的时候不太好使。


版权所属:SO JSON在线解析

原文地址:https://www.sojson.com/blog/286.html

转载时必须以链接形式注明原始出处及本声明。

本文主题:

如果本文对你有帮助,那么请你赞助我,让我更有激情的写下去,帮助更多的人。

关于作者
一个低调而闷骚的男人。
相关文章
json 解析生成工具类 ,JSON操作讲解(附件)
Java 解析二维码,google.ZXing 讲解
Java 解析JSON,JSON-LIB jar包下载和使用。
阿里云DNS 解析讲解,SEO配置搜索引擎线路解析
使用zxing解析二维码抛出com.google.zxing.NotFoundException 解决方案
Javascript 生成UUID,Java生成UUID
Java获取浏览器请求头(User-Agent),分浏览器信息,系统信息的几种办法。
Redis 单线程模型分
MyEclipse8.5 注册码生成 Java代码实现方式。永久免费
JSOUP 教程,JSOUP爬虫教程,JSOUP超时分与处理
最新文章
使用七牛云存储实现图片API,自动删除图片方案合集 1124
神速ICP备案经验分享,ICP备案居然一天就通过了 2232
百度加强推送URL链接,百度SEO强行推送链接JavaScript代码案例讲解。 2913
SOJSON 拓展服务器被DDos攻击了一晚上,是如何解决的? 3334
湖南地区备案“新增网站需提交组网方案或解释说明”,关于备案做简单叙述 3314
企查查你是个什么企业,骗子的帮凶,诈骗的集中营,通过企查查骚扰企业电话不断,为所欲为的企查查 9613
Java爬取百度云观测对网站的检测数据,获取子域名及域名的安全信息 2555
【2020年】百度搜索词获取,获取百度搜索的关键词【真实有效】 7031
Nodejs环境安装,Nodejs环境安装一篇就够了 1804
iOS版淘宝打开提示“您使用的程序是内测版本,将于2020-03-28到期,到期将无法使用,请尽快下载最新版本” 2489
最热文章
苹果电脑Mac怎么恢复出厂系统?苹果系统怎么重装系统? 432189
我为什么要选择RabbitMQ ,RabbitMQ简介,各种MQ选型对比 417807
免费天气API,全国天气 JSON API接口,可以获取五天的天气预报 350782
最新MyEclipse8.5注册码,有效期到2020年 (已经更新) 311945
免费天气API,天气JSON API,不限次数获取十五天的天气预报 287969
Elasticsearch教程(四) elasticsearch head 插件安装和使用 221306
Jackson 时间格式化,时间注解 @JsonFormat 用法、时差问题说明 177428
谈谈斐讯路由器劫持,你用斐讯路由器,你需要知道的事情 136359
Elasticsearch教程(一),全程直播(小白级别) 119548
Elasticsearch教程(五) elasticsearch Mapping的创建 98873

骚码加入我们 / 千人QQ群:259217951

入群需要5元为的是没有垃圾广告,如果没有QQ钱包,可以加群主拉进。

二维码生成 来自 >> 二维码生成器

支付扫码

所有赞助/开支都讲公开明细,用于网站维护:赞助名单查看

查看我的收藏

正在加载... ...