5

この形式のような文字列値がいくつかありますが、

[INFO]  [Tue Aug 21 14:54:22 2012]  [ViewController]  [26]  [Hello]  [;]

これらの文字列を NSJSONSerialization を使用して JSON に変換したいと考えています。

次のコードを使用して文字列を変換していますが、

 for (i = 0; i < [logArray count]; i++) 
{
    individualLogInfoArray = [[logArray objectAtIndex:i] componentsSeparatedByString:kDelimitterSpace];
    [dictionaryArray addObject:individualLogInfoArray];

}

finalLogDictionary = [NSMutableDictionary dictionaryWithObjectsAndKeys:dictionaryArray,@"Log", nil];
    NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:finalLogDictionary 
                                                   options:NSJSONWritingPrettyPrinted
                                                     error:&error];

NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
NSLog(@"JsonString = %@",jsonString);

次に、このような出力が得られます。

JsonString = {
  "Log" : [
    "[INFO]  [Tue Aug 21 14:54:22 2012]  [ViewController]  [26]  [Hello]  [;]",
    "[DEBUG]  [Tue Aug 21 14:54:22 2012]  [ViewController]  [27]  [hi]  [;]",
    "[INFO]  [Tue Aug 21 14:54:22 2012]  [ViewController]  [28]  [Its  there]  [;]",
    "[PROD]  [Tue Aug 21 14:54:22 2012]  [ViewController]  [29]  [Welcome]  [;]"
  ]
}

しかし、私はこのような出力が欲しい、

{
"log": "[INFO]  [Tue Aug 21 14:54:22 2012]  [ViewController]  [26]  [Hello],[INFO]  [Tue Aug 21 14:54:22 2012]  [ViewController]  [26]  [Hello],[INFO]  [Tue Aug 21 14:54:22 2012]  [ViewController]  [26]  [Hello]"

}

上記の形式で JSON 文字列を生成する方法がわかりません。解決策を提案してください。

4

2 に答える 2

4

取得している文字列は有効な JSON ですが、必要な文字列はそうではありません。したがって、iOS JSON ライブラリを使用して無効な JSON を生成することはできません。

このオンライン ユーティリティを使用して有効性をテストできます。

JSONLint

それが役立つことを願っています。

更新:その後、質問が改訂され、必要な出力として有効な JSON が表示されました。

于 2012-08-27T09:50:17.050 に答える
0

改訂された質問は、NSDictionary、NSString、およびNSArrayオブジェクトを操作して、JSONとしてシリアル化する前に目的の形式を取得する場合です。

キーと値のペアを含む辞書に元のデータを操作する必要があります。

ログ:

...そしてそれをJSONとしてシリアル化します。

logArrayアイテムごとにオブジェクトを追加するループでは、代わりに必要な形式でStringを追加できます。

于 2012-08-28T08:26:16.610 に答える