首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将PLIST转换为JSON的命令行工具?

将PLIST转换为JSON的命令行工具?
EN

Stack Overflow用户
提问于 2011-05-20 08:39:11
回答 7查看 29K关注 0票数 74

是否有命令行工具可用于将.plist文件转换为JSON?

如果不是,在Mac上使用Objective-C或C来创建一个应用程序的方法是什么?例如,对于Objective-C,有JSONKit。如何打开.plist文件,将其传递给JSONKit,并将其序列化为JSON?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2012-06-12 14:46:53

如果你在Mac上,你可以在命令行上使用plutil工具(我相信这是开发人员工具附带的):

代码语言:javascript
复制
plutil -convert json Data.plist

正如评论中提到的,这将覆盖现有数据。输出到新文件的步骤

代码语言:javascript
复制
plutil -convert json -o Data.json Data.plist
票数 170
EN

Stack Overflow用户

发布于 2011-05-21 10:56:22

以下是完成工作的方法:

代码语言:javascript
复制
// convertPlistToJSON.m
#import <Foundation/Foundation.h>
#import "JSONKit.h"

int main(int argc, char *argv[]) {
  NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

  if(argc != 3) { fprintf(stderr, "usage: %s FILE_PLIST FILE_JSON\n", argv[0]); exit(5); }

  NSString *plistFileNameString = [NSString stringWithUTF8String:argv[1]];
  NSString *jsonFileNameString  = [NSString stringWithUTF8String:argv[2]];

  NSError *error = NULL;

  NSData *plistFileData = [NSData dataWithContentsOfFile:plistFileNameString options:0UL error:&error];
  if(plistFileData == NULL) {
    NSLog(@"Unable to read plist file.  Error: %@, info: %@", error, [error userInfo]);
    exit(1);
  }

  id plist = [NSPropertyListSerialization propertyListWithData:plistFileData options:NSPropertyListImmutable format:NULL error:&error];
  if(plist == NULL) {
    NSLog(@"Unable to deserialize property list.  Error: %@, info: %@", error, [error userInfo]);
    exit(1);
  }

  NSData *jsonData = [plist JSONDataWithOptions:JKSerializeOptionPretty error:&error];
  if(jsonData == NULL) {
    NSLog(@"Unable to serialize plist to JSON.  Error: %@, info: %@", error, [error userInfo]);
    exit(1);
  }

  if([jsonData writeToFile:jsonFileNameString options:NSDataWritingAtomic error:&error] == NO) {
    NSLog(@"Unable to write JSON to file.  Error: %@, info: %@", error, [error userInfo]);
    exit(1);
  }

  [pool release]; pool = NULL;
  return(0);
}

它做了一些合理的错误检查,但它不是防弹的。使用风险自负。

您将需要JSONKit来构建该工具。将JSONKit.mJSONKit.h放在与convertPlistToJSON.m相同的目录中,然后使用以下命令进行编译:

代码语言:javascript
复制
shell% gcc -o convertPlistToJSON convertPlistToJSON.m JSONKit.m -framework Foundation

用法:

代码语言:javascript
复制
shell% convertPlistTOJSON
usage: convertPlistToJSON FILE_PLIST FILE_JSON

shell% convertPlistTOJSON input.plist output.json

读入input.plist,并将打印得很好的JSON写入output.json

票数 5
EN

Stack Overflow用户

发布于 2011-05-20 10:36:47

代码很容易做到这一点:

代码语言:javascript
复制
NSArray* array = [[NSArray arrayWithContentsOfFile:[@"~/input.plist" stringByExpandingTildeInPath]]retain];
SBJsonWriter* writer = [[SBJsonWriter alloc] init];
NSString* s = [[writer stringWithObject:array] retain];
[s writeToFile:[@"~/output.json" stringByExpandingTildeInPath] atomically:YES];
[array release];

我从来没有花时间让它接受参数,因为我只需要做3个文件。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6066350

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档