[英]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.