首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JSON to NSDictionary to NSArray give me empty NSArray?:(

JSON to NSDictionary to NSArray give me empty NSArray?:(
EN

Stack Overflow用户
提问于 2012-02-02 21:26:09
回答 1查看 5.2K关注 0票数 0

这就是我的问题:

输入(来自某个网站):

代码语言:javascript
复制
{"error":[],"results":{"count":2,"data":[{"ART_ID":"656","ART_NAME":"Noir D\u00e9sir","ART_PICTURE":".....","NB_ALBUM":"15","NB_FAN":"90176","SMARTRADIO":"1","URL_REWRITING":"noir-desir"},{"ART_ID":"167225","ART_NAME":"LMFAO","ART_PICTURE":"....","NB_ALBUM":"17","NB_FAN":"122408","SMARTRADIO":"1","URL_REWRITING":"lmfao"}],"total":2}}

所以,一旦我做到这一点,我就会使用一些JSON类:

代码语言:javascript
复制
 NSError* jsonError = nil;
 //responseData contains my json feed
 NSDictionary* dict = [NSJSONSerialization JSONObjectWithData:responseData options:0 error:&jsonError];

 NSLog(@"responseDictionary : \n%@\n--------\n", [dict description]);

为了获得以下内容:

代码语言:javascript
复制
{
    error =     (
    );
    results =     {
        count = 2;
        data =         (
                        {
                "ART_ID" = 656;
                "ART_NAME" = "Noir D\U00e9sir";
                "ART_PICTURE" = 17b0a9c3defcf8c3eef943759606b3f4;
                "NB_ALBUM" = 15;
                "NB_FAN" = 90176;
                SMARTRADIO = 1;
                "URL_REWRITING" = "noir-desir";
            },
                        {
                "ART_ID" = 167225;
                "ART_NAME" = LMFAO;
                "ART_PICTURE" = 72a09b9202da38afae077e80c7598212;
                "NB_ALBUM" = 17;
                "NB_FAN" = 122408;
                SMARTRADIO = 1;
                "URL_REWRITING" = lmfao;
            }
        );
        total = 2;
    };
}

在这里,我真的没有任何问题...但是现在,我想要在这个NSDictionary中获得"data“字段。所以我只是创建了一个新的:

代码语言:javascript
复制
NSDictionary* resultField = [NSDictionary dictionaryWithDictionary:[dict objectForKey:@"results"]];

其中包含:

代码语言:javascript
复制
{
    count = 2;
    data =     (
                {
            "ART_ID" = 656;
            "ART_NAME" = "Noir D\U00e9sir";
            "ART_PICTURE" = 17b0a9c3defcf8c3eef943759606b3f4;
            "NB_ALBUM" = 15;
            "NB_FAN" = 90176;
            SMARTRADIO = 1;
            "URL_REWRITING" = "noir-desir";
        },
                {
            "ART_ID" = 167225;
            "ART_NAME" = LMFAO;
            "ART_PICTURE" = 72a09b9202da38afae077e80c7598212;
            "NB_ALBUM" = 17;
            "NB_FAN" = 122408;
            SMARTRADIO = 1;
            "URL_REWRITING" = lmfao;
        }
    );
    total = 2;
}

现在我想要获取我的"data“字段,它现在是一个JSONArray (不再是NSDictionary ...):

代码语言:javascript
复制
NSArray* dataField = [[NSArray alloc] initWithArray:[dict objectForKey:@"data"]];

但在那之后我的dataField就空了。我的意思是:

代码语言:javascript
复制
NSArray* dataField = [[NSArray alloc] initWithArray:[dict objectForKey:@"data"]];
if (!dataField || ![dataField isKindOfClass:[NSArray class]]) {
    NSLog(@"Pb parsing DATA field as NSArray...");
}
NSLog(@"dataField : \n%@\n--------\n", [dataField description]);

没有显示错误,因为它是一个格式正确的NSArray,但会打印以下内容:

代码语言:javascript
复制
2012-02-02 14:08:52.315 myapp[5235:f803] dataField : 
(
)

我现在迷失了,我真的不知道发生了什么.如果你们在这个问题上有任何线索,我将很高兴你们能帮助我!

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-02 21:45:53

你从第一个字典(dict)中获取"Data“数组,你应该从resultField中获取它:

代码语言:javascript
复制
NSArray* dataField = [[NSArray alloc] initWithArray:[resultField objectForKey:@"data"]];
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9113116

复制
相关文章

相似问题

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