簡體   English   中英

iOS-如何在Xcode中解析Json數組並保存結果為字符串

[英]iOS - How to parse Json array in xcode and save results are strings

嗨,我正在嘗試將Json字符串解析為NSArray並將某些結果保存為字符串,以便為我的應用程序中的不同用戶設置權限。 我當前的代碼是:

NSError *jsonParsingError1 = nil;
        accountData = [NSJSONSerialization JSONObjectWithData:jsonAccount
                                                   options:NSJSONReadingMutableContainers error:&jsonParsingError1];

accountData是在.h文件中創建的NSMutableArray。 jsonAccount是通過轉換NSString創建的NSData

為陣列放置的NSLog為;

  {
    account = "XXXX";
    companyName = XXXXX;
    id = XXXXX;
    websites =         (
                    {
            account = "XXXXX";
            accountId = XXXXX;
            anonymiseIP = 0;
            companyName = XXXXX;
            XXXX = 0;
            domains =                 (
                "XXXXX"
            );
            features =                 {
                advancedSegmentation = 1;
                attentionHeatmaps = 1;
                domains = 0;
                dotHeatmaps = 1;
                goalConversionTracking = 1;
                interactionHeatmaps = 1;
                leadInfo = 0;
                scrollHeatmaps = 1;
                timeHeatmaps = 1;
                users = 0;
                valueHeatmaps = 1;
                visitorPlayback = 1;
                visitorScoring = 1;
                visitors = 1;
            };
            fixedElementSelector = "";
            flagClicksReceived = 0;
            flagDataReceived = 0;
            flagGoalsReceived = 0;
            flagInteractionsReceived = 0;
            flagScrollsReceived = 0;
            id = XXXXX;
            interactionSelector = "";
            name = "XXXX";
            permissions =                 (
                segments,
                heatmaps,
                visitors,
                campaigns,
                support,
                globalSettings,
                websiteSettings
            );
            setCookies = 1;
            status = 1;
            statusMessage = "";
            statusString = OK;
            trialling = 1;
        }
    );
},       

當我嘗試從結果之一創建字符串並將其顯示在日志中時,出現此錯誤:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFArray:]: unrecognized selector sent to instance 0x6a950f0'

如何將不同的鍵另存為字符串?

看起來您的JSON是一個Dictionary,而不是一個Array。

您的JSON不是數組,應該像NSDictionary一樣解析它

解析JSON之后,您應該測試其返回的對象類型。 例如:

if ([accountData isKindOfClass:[NSArray class]]) {
   // handle like an array
} else if ([accountData isKindOfClass:[NSDictionary class]]) {
   // handle like a dictionary
}

您的JSON是具有四個鍵的字典:account,companyName,id和website。

關鍵的“網站”將為您提供一個數組。

您可以遍歷“網站”數組,每個元素都是一個字典。

“網站”數組中的每個詞典都有很多鍵,例如account,accountId,anonymiseIP等。 其中一些鍵的值是字典或數組。

在NSLog語句中,(a,b,c)將是一個數組,而{a = x; b = y; c = z; }將是一本字典。

您的服務器響應是字典,因此將accountData更改為字典

在下面編寫NSLog,您將獲得其中的信息

[accountData objectForKey:@"account"];
[accountData objectForKey:@"companyName"];
[accountData objectForKey:@"id"];
[[accountData objectForKey:@"websites"] count];//array
[[[accountData objectForKey:@"websites"] objectAtIndex:0]objectForKey:@"account"];
[[[accountData objectForKey:@"websites"] objectAtIndex:0]objectForKey:@"domains"];
[[[[accountData objectForKey:@"websites"] objectAtIndex:0]objectForKey:@"domains"]count]; //array
[[[[accountData objectForKey:@"websites"] objectAtIndex:0]objectForKey:@"domains"]objectAtIndex:0];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM