2

HTMLの廃棄を行っているときに、次のタイプのJSオブジェクトに遭遇します。

[{
  key1: "Hello",
  key2: "There",
}, {
  key1: "Goodbye",
  key2: "See you",
},]

キーは間にラップされ" "ていないため、有効なJSON文字列ではないことに注意してください。JSON/NSArray/NSDictionaryしたがって、何らかの処理を行わずに解析することはできません。

この種の文字列を適切なObjective-Cオブジェクトに変換できるライブラリ/組み込み関数はありますか?

4

1 に答える 1

0

私はついにこのDimmzyのブログ投稿で解決策を見つけました(このほぼ同じ質問に感謝します)。この関数を使用して、ダーティなJSON文字列からクリーンなJSON文字列を取得します。

+ (NSString *)fixJSON:(NSString *)s {
  NSRegularExpression *regexp = [NSRegularExpression regularExpressionWithPattern:@"[{,]\\s*(\\w+)\\s*:"
                                                                          options:0
                                                                            error:NULL];
  NSMutableString *b = [NSMutableString stringWithCapacity:([s length] * 1.1)];
  __block NSUInteger offset = 0;
  [regexp enumerateMatchesInString:s
                           options:0
                             range:NSMakeRange(0, [s length])
                        usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) {
                          NSRange r = [result rangeAtIndex:1];
                          [b appendString:[s substringWithRange:NSMakeRange(offset, r.location - offset)]];
                          [b appendString:@"\""];
                          [b appendString:[s substringWithRange:r]];
                          [b appendString:@"\""];
                          offset = r.location + r.length;
                        }];
  [b appendString:[s substringWithRange:NSMakeRange(offset, [s length] - offset)]];
  return b;
}
于 2012-08-06T18:55:21.263 に答える