跳到正文

← 全部工具

给 iOS 和 Mac 开发者的免费工具

属性列表(plist)转换器

拖入或粘贴一个 .plist(XML 或二进制),即可转成 XML、JSON 或下载二进制 plist,并用树状视图查看每个值的类型。粘贴 JSON 则可以反向转换。JSON 没有对应类型的日期和二进制数据会逐一列出,不会在你不知情时改变。它做的就是 plutil -convert 的事,但不需要 Mac,文件也不会离开本页。

把 .plist 或 .json 文件拖到这里

支持 XML 或二进制(bplist00)属性列表,以及 JSON。文件在本页读取,不会上传。

识别为 XML 属性列表 · 共 12 个值

  • (根)字典9 个键
    • CFBundleDisplayName字符串"Pocket Notes"
    • CFBundleShortVersionString字符串"2.4"
    • CFBundleVersion字符串"118"
    • LSRequiresIPhoneOS布尔true
    • UIBackgroundModes数组2 项
      • 0字符串"fetch"
      • 1字符串"remote-notification"
    • ReleaseDate日期2026-03-07T17:50:56Z
    • IconScale实数2
    • MaxItems整数500
    • Signature数据de ad be ef (4 字节)

它是怎么工作的

  • •按开头的字节识别输入:bplist00 是二进制属性列表,< 是 XML,其他内容按 JSON 读取。
  • •XML 按 plutil 的写法输出:制表符缩进,空的写成 <dict/> 和 <array/>,data 每 68 个字符换行。键保持原有顺序,也可以选择 plutil 的排序方式。
  • •二进制写入按苹果开源的 CFBinaryPList.c 中描述的格式实现:文件头、对象、偏移表和尾部。重复的字符串和数字只存一次。输出用 plutil -lint、plutil -convert xml1 和 plutil -p 检查过。
  • •实数仍是实数,整数仍是整数:<real>2</real> 在 JSON 里写成 2.0,转回来时仍然是实数。
  • •在 JSON 里,日期写成 ISO 8601 文本,二进制数据写成 base64 文本,页面会列出每一处。读取 JSON 时,由你决定这类字符串是否转回 <date> 和 <data>。
  • •XML 和 JSON 的错误会指出行号和列号;plist 放不下的值(如 null)会指出键的路径。

它做不到的事

  • •不读取旧的 OpenStep 文本格式({ key = value; })和 .strings 文件。
  • •不能编辑值;请先转换,在编辑器里修改 XML 或 JSON,再转换回来。
  • •不会把 NSKeyedArchiver 归档还原成对象。其中的 UID 引用会显示并保留,但 JSON 只能写成 {"CF$UID": n}。
  • •XML 日期只保存到整秒,所以二进制 plist 里带小数秒的日期在 XML 里会丢掉小数部分,plutil 也是如此。
  • •生成的二进制文件内容与 plutil 的相同,但字节不一定完全一样,因为对象顺序和共享方式可能不同。
  • •超过 5 MB 的文件不予处理。

常见问题

在 Mac 上怎么把二进制 plist 转成 XML?
在终端里:plutil -convert xml1 Info.plist 会直接改写原文件,plutil -convert xml1 -o out.plist Info.plist 会另存一份,plutil -p Info.plist 只打印内容。本页在任何电脑上都能得到同样的 XML,不需要终端。
为什么 plutil -convert json 报错“Invalid object in plist for JSON format”?
因为 plist 里有 <date> 或 <data> 值,而 JSON 没有对应的类型,所以 plutil 拒绝转换。本页把日期写成 ISO 8601 文本、把二进制数据写成 base64 文本,并列出每一处这样处理的位置。
Xcode 和 iOS 能读取本页生成的二进制文件吗?
能,它是标准的 bplist00 文件。本页的测试会用这个写入器转换文件,再与 plutil 对原文件的读取结果比较,覆盖长数组、Unicode 字符串、64 位整数、日期和二进制数据。
JSON 里的数字会变成什么 plist 类型?
没有小数点或指数的数字(如 3)变成 <integer>;带小数点或指数的(如 3.0、1e3)变成 <real>。整数必须在 -2^63 到 2^64 - 1 之间,这是 plist 整数能容纳的范围;超出的会连同路径一起报告。
项目里的 Info.plist 应该用 XML 还是二进制?
源文件用 XML:在 Git 里比较和合并都很清楚。Xcode 可以通过 INFOPLIST_OUTPUT_FORMAT 构建设置把 App 包里的那份写成二进制,所以源文件的大小无关紧要。
我的文件会被上传吗?
不会。文件由本页里运行的代码读取和转换,不会发送到服务器。页面加载后断开网络,照样可以使用。

相关工具