不解析 PHP JSON
Posted
技术标签:
【中文标题】不解析 PHP JSON【英文标题】:not parsing PHP JSON 【发布时间】:2013-11-23 17:28:17 【问题描述】:我不确定我的 JSON 或 xcode 中的代码是否有问题,但我无法让 xcode 解析我的 JSON。我的 JSON 是有效的,但是我无法解析它。有人看到我做错了吗?
这是我用于生成 JSON 的 php:
$channel['items']['post']['category_name'][$category_name]['details'][] = array(
'title' => $title,
'description' => $description,
'category_id' => $category_id,
);
$channels = array($channel);
$json = json_encode($channel);
header('Content-type: application/json');
echo $json;
这会给出这样的 JSON:
"items":
"post":
"category_name":
"Baby":
"details": [
"title": "trying with category id again",
"price": "3344.55",
,
"title": "this is sending with description ",
"price": "900000.00",
]
,
“Other Baby Stuff":
"details": [
"title": "putting in title",
"price": "3000.99",
这是我在 xcode 中要解析的代码(我希望我的部分标题为类别名称,如“婴儿”、“其他婴儿用品”等:
- (void)fetchedData:(NSData *)responseData
//parse out the json data
NSError* error;
NSDictionary* json = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error];
dispatch_async(dispatch_get_main_queue(), ^
[m_tableView reloadData];
);
_buyCategory = json[@"items"][@"post"][@"category_name"];//THIS IS PARSING JUST FINE NOW
NSLog(@"Items: %@", _buyCategory);
NSLog(@"Array Count: %u", [_buyCategory count]);
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
if (appDelegate.bLoadBuy == 1)
NSString *section = [[_buyCategory allKeys] objectAtIndex:0]; ///NOT RETURNING ANYTHING
NSLog(@"category: %@", section); //I AM NOT EVEN GETTING NSLOG HERE
return [NSString stringWithFormat:@"%@",section];];
在我的表格视图单元格中(我想要我的详细信息)
_buyTitle = [[tempResults objectForKey:@"details"] objectForKey:@"title"];
【问题讨论】:
你在哪里解析 JSON?您要显示的数据到底是什么?给定的 JSON 是一个“JSON 对象”(又名字典、散列、关联容器等),不适合在表格视图中显示。表格视图需要一个 array 对象。 感谢您的帮助。我想将它传递到我的表格视图中。 JSON 对许多不同的类别重复。上面的只是显示宝贝,但我还有其他类别,如婴儿服装等。所以每个类别名称应该是我表格中的一个部分名称,并在表格中的单元格中包含详细信息(标题等)。 现在,对于这些部分,这是有道理的。但是您可能是说,每个详细信息条目都应该显示在一个单元格(单独的行)中,而不是 一个 单元格中的 所有 详细信息? 哦,是的,所有细节都在一个单元格中(并不是所有细节......只有一些细节会在我的细节屏幕中)但我想你明白我的意思。 查看 chuthan20 的回答。 ;) 【参考方案1】:NSDictionary *category = json[@"items"][@"post"][@"category_name"];
//section title
NSString *section = [[category allKeys] objectAtIndex:0]
//array of detail object.. so details[0][@"title"] should give you the first titme
NSArray *details = [category objectForKey:section];
【讨论】:
好的,谢谢。我正在尝试这个。你是说这会进入 titleforheaderinsection 吗? NSString *section..// 好的,我支持你。不幸的是,我的妻子让我去购物。我稍后会试试这个。谢谢你的帮助![[category allKeys] objectAtIndex:0]
将返回任意项目,不一定是“宝贝”,因为字典没有排序。
是的,因为他没有数组来保持顺序,所以我只是用索引 0 来展示他作为示例。当然我说它会返回 'Baby' 作为值是错误的,但是从发布的示例 json 中,更容易说 'Baby' 将是值。以上是关于不解析 PHP JSON的主要内容,如果未能解决你的问题,请参考以下文章