1

これはサーバーからのjsonです:

{
    "name":"channelname",   
    "args":
    [
        {           
            "username":"myusername",
            "message":"mymessage"
        }
    ]
} 

ios5の組み込みjsonメソッドを使用して、argsのユーザー名/メッセージを解析しようとします。

NSDictionary *JSON = [NSJSONSerialization JSONObjectWithData: [packet.data dataUsingEncoding:NSUTF8StringEncoding] options: NSJSONReadingMutableContainers error: nil];
NSDictionary *argsValues = [[NSDictionary alloc] initWithDictionary:[JSON objectForKey:@"args"]];

2行目はエラーをスローします:

dictionary argument is not an NSDictionary

NSlog [JSON objectForKey @ "args"]を実行すると、次のようになります。

(
    {
        message = mymessage;
        username = myusername;
    }
)

かっこが壊れていると思います。どこから来たのかわからないので、よろしくお願いします。

編集:

選択した回答のおかげで、これがargsキーを取得するために使用したコードです。

NSDictionary *JSON = [NSJSONSerialization JSONObjectWithData: [packet.data dataUsingEncoding:NSUTF8StringEncoding] options: NSJSONReadingMutableLeaves error: nil];
NSArray *argsArray = [[NSArray alloc] initWithArray:[JSON objectForKey:@"args"]];
NSDictionary *argsDict = [[NSDictionary alloc] initWithDictionary:[argsArray objectAtIndex:0]];
NSLog(@"keys = %@", [argsDict allKeys]);
4

1 に答える 1

2
[json objectForKey:@"args"]

NSArrayです。NSDictionaryをアレイで直接初期化することはできません。

(JSONでは、{と}はNSDictionaryのようなキーと値のペアを示しますが、[と]はNSArrayのような順序付きリストを区切ります。そのため、マッピングはそのまま行われます...)

于 2012-06-30T23:42:32.627 に答える