将数组中的 JSON 解析为 NSDictionary? (目标)
Parse JSON from an Array into NSDictionary? (ObjC)
看了一段时间,尽我所知尝试了所有可能的方法,但仍然没有成功。
如何解析以下 JSON 以将第一个数组放入字典中?我正在使用 AFNetworking 库和 responseObject returns 以下内容:
(
y,
(
yeti,
"yeti tumbler",
"yoga pants",
"yoga mat",
"yeezy boost 350",
"yeti cup",
yoga,
yeezy,
"young living essential oils",
yugioh
),
(
{
nodes = (
{
alias = garden;
name = "Home & Kitchen";
},
{
alias = "outdoor-recreation";
name = "Outdoor Recreation";
},
{
alias = "fan-shop";
name = "Sports Fan Shop";
}
);
},
{
},
{
},
{
},
{
},
{
},
{
},
{
},
{
},
{
}
),
(
)
)
现在,如何将第一个数组放入 NSDictionary 中?
(
yeti,
"yeti tumbler",
"yoga pants",
"yoga mat",
"yeezy boost 350",
"yeti cup",
yoga,
yeezy,
"young living essential oils",
yugioh
)
ObjC 代码:
- (void)requestJSONWithQuery:(NSString *)query
{
if (!_requestOperation.isCancelled) [_requestOperation cancel];
query = [query stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSString *string = [NSString stringWithFormat:_URLDictionaryForAPIs[@(_APIType)], query];
NSURL *url = [NSURL URLWithString:string];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
_requestOperation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
_requestOperation.responseSerializer = [AFJSONResponseSerializer serializer];
__block FFFGoogleSearchAutoCompleteController *selfInBlock = self;
[_requestOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
// NSLog(@"%@", responseObject);
selfInBlock.suggestions = [(NSDictionary *)responseObject mutableArrayValueForKey:query];
[selfInBlock refreshSuggestionTable];
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
}];
[_requestOperation start];
}
这将return出现以下错误:
Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<NSTaggedPointerString 0xa0000000000006b1> valueForUndefinedKey:]: this class is not key value coding-compliant for the key K.'
["k",["kindle","kindle fire","kindle books","keurig","knife","kate spade","keyboard","kindle paperwhite","knife sharpener","kindle fire case"],[{"nodes":[{"name":"Kindle Store","alias":"digital-text"},{"name":"Electronics","alias":"electronics"},{"name":"Computers","alias":"computers"}]},{},{},{},{},{},{},{},{},{}],[]]
不是字典。你的回应是一个数组。第一项是查询。第二个似乎是你想要的东西。我会尝试这样做进行测试:
selfInBlock.suggestions = [(NSArray *)responseObject objectAtIndex:1];
看了一段时间,尽我所知尝试了所有可能的方法,但仍然没有成功。
如何解析以下 JSON 以将第一个数组放入字典中?我正在使用 AFNetworking 库和 responseObject returns 以下内容:
(
y,
(
yeti,
"yeti tumbler",
"yoga pants",
"yoga mat",
"yeezy boost 350",
"yeti cup",
yoga,
yeezy,
"young living essential oils",
yugioh
),
(
{
nodes = (
{
alias = garden;
name = "Home & Kitchen";
},
{
alias = "outdoor-recreation";
name = "Outdoor Recreation";
},
{
alias = "fan-shop";
name = "Sports Fan Shop";
}
);
},
{
},
{
},
{
},
{
},
{
},
{
},
{
},
{
},
{
}
),
(
)
)
现在,如何将第一个数组放入 NSDictionary 中?
(
yeti,
"yeti tumbler",
"yoga pants",
"yoga mat",
"yeezy boost 350",
"yeti cup",
yoga,
yeezy,
"young living essential oils",
yugioh
)
ObjC 代码:
- (void)requestJSONWithQuery:(NSString *)query
{
if (!_requestOperation.isCancelled) [_requestOperation cancel];
query = [query stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSString *string = [NSString stringWithFormat:_URLDictionaryForAPIs[@(_APIType)], query];
NSURL *url = [NSURL URLWithString:string];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
_requestOperation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
_requestOperation.responseSerializer = [AFJSONResponseSerializer serializer];
__block FFFGoogleSearchAutoCompleteController *selfInBlock = self;
[_requestOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
// NSLog(@"%@", responseObject);
selfInBlock.suggestions = [(NSDictionary *)responseObject mutableArrayValueForKey:query];
[selfInBlock refreshSuggestionTable];
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
}];
[_requestOperation start];
}
这将return出现以下错误:
Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<NSTaggedPointerString 0xa0000000000006b1> valueForUndefinedKey:]: this class is not key value coding-compliant for the key K.'
["k",["kindle","kindle fire","kindle books","keurig","knife","kate spade","keyboard","kindle paperwhite","knife sharpener","kindle fire case"],[{"nodes":[{"name":"Kindle Store","alias":"digital-text"},{"name":"Electronics","alias":"electronics"},{"name":"Computers","alias":"computers"}]},{},{},{},{},{},{},{},{},{}],[]]
不是字典。你的回应是一个数组。第一项是查询。第二个似乎是你想要的东西。我会尝试这样做进行测试:
selfInBlock.suggestions = [(NSArray *)responseObject objectAtIndex:1];