-2

私は文字列を持っています:

[{"id":1、 "gameName": "arizona"、 "cost": "0.5E1"、 "email": "hi@gmail.com"、 "requests":0}、{"id":2 、"gameName": "arizona"、 "cost": "0.5E1"、 "email": "hi@gmail.com"、 "requests":0}、{"id":3、 "gameName": "arizona "、" cost ":" 0.5E1 "、" email ":" hi@gmail.com "、" requests ":0}]

ただし、この文字列を次のような配列に解析したいと思います。

[{"id":1、 "gameName": "arizona"、 "cost": "0.5E1"、 "email": "hi@gmail.com"、 "requests":0}、{"id":2 、"gameName": "arizona"、 "cost": "0.5E1"、 "email": "hi@gmail.com"、 "requests":0}、{"id":3、 "gameName": "arizona "、" cost ":" 0.5E1 "、" email ":" hi@gmail.com "、" requests ":0}]

この配列は、中括弧の間にあるコンマで区切られます:}、{

私はコマンドを使用してトライドします

NSArray *responseArray = [response componentsSeparatedByString:@","];

ただし、これにより、文字列がすべてのコンマの値に分割されます。これは望ましくありません。

次に、正規表現を使用してみました。

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"\\{.*\\}" options:NSRegularExpressionCaseInsensitive error:&error];
NSArray *matches = [regex matchesInString:response options:0 range:NSMakeRange(0, [response length])];

最初のカーリーブレースから最後のカーリーブレースまで、1つの一致が見つかりました。この問題を効率的に解決する方法を新しくした人はいないでしょうか。

4

2 に答える 2

3

この文字列は有効なJSONのようです。JSONパーサーを試してください:NSJSONSerialization

于 2012-09-06T05:15:01.800 に答える
0

可能な場合はパーサーを使用するというH2CO3の提案に同意します。

しかし、試行した正規表現を見ると、欲張りでないものにする必要があるように見えます。

@"\\{.*?\\}"
       ^
       |
       Add this question mark for non-greedy matching.

もちろん、ネストされた配列のレベルがより深い場合(私が想定しているもの)、これは失敗します。JSONパーサーを使用してください!

于 2012-09-06T05:22:01.250 に答える