是否有命令行工具可用于将.plist文件转换为JSON?
如果不是,在Mac上使用Objective-C或C来创建一个应用程序的方法是什么?例如,对于Objective-C,有JSONKit。如何打开.plist文件,将其传递给JSONKit,并将其序列化为JSON?
发布于 2012-06-12 14:46:53
如果你在Mac上,你可以在命令行上使用plutil工具(我相信这是开发人员工具附带的):
plutil -convert json Data.plist
正如评论中提到的,这将覆盖现有数据。输出到新文件的步骤
plutil -convert json -o Data.json Data.plist
发布于 2011-05-21 10:56:22
以下是完成工作的方法:
// 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.m
和JSONKit.h
放在与convertPlistToJSON.m
相同的目录中,然后使用以下命令进行编译:
shell% gcc -o convertPlistToJSON convertPlistToJSON.m JSONKit.m -framework Foundation
用法:
shell% convertPlistTOJSON
usage: convertPlistToJSON FILE_PLIST FILE_JSON
shell% convertPlistTOJSON input.plist output.json
读入input.plist
,并将打印得很好的JSON写入output.json
。
发布于 2011-05-20 10:36:47
代码很容易做到这一点:
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个文件。
https://stackoverflow.com/questions/6066350
复制相似问题