86

次のデータを として保存していますNSString

 {
    Key = ID;
    Value =         {
        Content = 268;
        Type = Text;
    };
},
    {
    Key = ContractTemplateId;
    Value =         {
        Content = 65;
        Type = Text;
    };
},

NSDictionaryこのデータを、キーと値のペアを含むに変換したいと考えています。

NSString最初に、次のようにJSONオブジェクトに変換しようとしています。

 NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];
id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];

しかし、私がしようとすると:

NSString * test = [json objectForKey:@"ID"];
NSLog(@"TEST IS %@", test);

として値を受け取りますNULL

誰が問題が何であるかを提案できますか?

4

5 に答える 5

263

キー値の JSON 形式を誤解していると思います。文字列を次のように保存する必要があります

NSString *jsonString = @"{\"ID\":{\"Content\":268,\"type\":\"text\"},\"ContractTemplateID\":{\"Content\":65,\"type\":\"text\"}}";
NSData *data = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];

次の NSLog ステートメントを実行すると、

NSLog(@"%@",[json objectForKey:@"ID"]);

結果は別の NSDictionary になります。

{
    Content = 268;
    type = text;
}

これが明確な理解を得るのに役立つことを願っています。

于 2013-09-11T08:43:42.710 に答える
2

スウィフト 3:

if let jsonString = styleDictionary as? String {
    let objectData = jsonString.data(using: String.Encoding.utf8)
    do {
        let json = try JSONSerialization.jsonObject(with: objectData!, options: JSONSerialization.ReadingOptions.mutableContainers) 
        print(String(describing: json)) 

    } catch {
        // Handle error
        print(error)
    }
}
于 2017-06-12T23:31:02.520 に答える