首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将NSString转换为NSDictionary / JSON

将NSString转换为NSDictionary / JSON
EN

Stack Overflow用户
提问于 2013-09-11 16:30:05
回答 4查看 136.6K关注 0票数 85

我将以下数据另存为NSString

代码语言:javascript
复制
 {
    Key = ID;
    Value =         {
        Content = 268;
        Type = Text;
    };
},
    {
    Key = ContractTemplateId;
    Value =         {
        Content = 65;
        Type = Text;
    };
},

我希望将此数据转换为包含键值对的NSDictionary

我首先尝试将NSString转换为JSON对象,如下所示:

代码语言:javascript
复制
 NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];
id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];

然而,当我尝试的时候:

代码语言:javascript
复制
NSString * test = [json objectForKey:@"ID"];
NSLog(@"TEST IS %@", test);

我收到的值是NULL

有谁能告诉我问题出在哪里吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-09-11 16:43:43

我相信您误解了键值的JSON格式。您应该将字符串存储为

代码语言:javascript
复制
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语句

代码语言:javascript
复制
NSLog(@"%@",[json objectForKey:@"ID"]);

结果将是另一个NSDictionary。

代码语言:javascript
复制
{
    Content = 268;
    type = text;
}

希望这有助于获得清晰的理解。

票数 262
EN

Stack Overflow用户

发布于 2013-09-11 16:32:55

使用以下代码,其中str是您的JSON字符串:

代码语言:javascript
复制
NSError *err = nil;
NSArray *arr = 
 [NSJSONSerialization JSONObjectWithData:[str dataUsingEncoding:NSUTF8StringEncoding] 
                                 options:NSJSONReadingMutableContainers 
                                   error:&err];
// access the dictionaries
NSMutableDictionary *dict = arr[0];
for (NSMutableDictionary *dictionary in arr) {
  // do something using dictionary
}
票数 6
EN

Stack Overflow用户

发布于 2017-06-13 07:31:03

Swift 3:

代码语言:javascript
复制
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)
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18736250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档