0

我有一个格式如下的文件:

/Users/devplayerx/Sandbox/pics/images/001012DG-161.JPG
  pixelWidth: 1600 
  pixelHeight: 1050 
filename: 001012DG-161.JPG

/Users/devplayerx/Sandbox/pics/images/001019DG-151 COPY.JPG
  pixelWidth: 1600 
  pixelHeight: 1050 
filename: 001019DG-151 COPY.JPG

并希望最终拥有一个以文件名作为键的 iOS 字典,以及以 pixelWidth 和 pixelHeight 作为值的字典或数组。我正在考虑将我的文本文件转换为 JSON 文件,然后使用 NSJSONSerialization 对其进行解析,但我不确定如何将我的文本文件转换为 JSON。另外,我想从文本文件中删除完整路径,因为它不是必需的。

4

3 回答 3

1

这是一个似乎可以完成这项工作的 perl 脚本:

#!/usr/bin/perl
use strict;
use warnings;

open FILE,"< yourfile.txt" or die "I/O error : $!\n";
my $w = 0;
my $h = 0;
my $f = "";

print "{\n";
while (my $line = <FILE>)
{
    if ($f)
    {
        print ",\n";
        $f = "";
    }
    if ($line =~ /pixelWidth: ([0-9]+)/)
    {
        $w = $1;
    }
    if ($line =~ /pixelHeight: ([0-9]+)/)
    {
        $h = $1;
    }
    if ($line =~ /filename: (.*)$/)
    {
        $f = $1;

        print "\t\"$f\" : [ $w, $h ]"
    }
}
print "\n}\n";
close FILE;

请注意,我不是 perl 专家,因此也许可以对其进行改进,但在您的输入文件上使用它似乎会产生您预期的 JSON,如下所示:

prompt$ perl scr.pl
{
    "001012DG-161.JPG" : [ 1600, 1050 ],
    "001019DG-151 COPY.JPG" : [ 1600, 1050 ]
}

请注意,一旦您拥有 JSON 文件,您可以选择使用该plutil工具将其转换为 PLIST 文件。例如perl scr.pl | plutil -convert binary1 -o yourfile.plist -将从(我上面的脚本)yourfile.plist生成的 JSON创建。然后,您可以使用NSDictionary 在一行中perl scr.pl轻松地在代码中读取此文件,并直接访问您的数据。[NSDictionary dictionaryWithContentsOfFile:pathToYourFilePlist]

于 2012-10-08T17:39:26.337 回答
0

json 对象可能如下所示:

{ picture: { path : "thePath", pixelWidth: 1600, pixelHeight: 1050, filename : "name" }}

然后,我将通过获取行并将它们放入列表中进行转换,循环遍历列表并最终使用上述对象表示法将所有内容吐出到另一个文本文件中。

您需要什么语言来编写工具以将其转换为 json?

于 2012-10-08T16:40:15.470 回答
0

您可以使用 NSInputStream 来读取文本文件,在每次迭代中,您都可以按照自己的方式构建字典。

之后只需使用 NSJSONSerialization。

于 2012-10-08T16:45:20.617 回答