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 ファイルに変換できます。たとえば、 (上記の私のスクリプト)によって生成された JSON からperl scr.pl | plutil -convert binary1 -o yourfile.plist -作成されます。その後、コードでこのファイルを簡単に読み取ることができ、1 行で NSDictionary としてデータに直接アクセスできます。yourfile.plistperl 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 に答える