不解析 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的主要内容,如果未能解决你的问题,请参考以下文章

PHP:JSON 或 XML 解析器更快吗?

如何在PHP中解析json

PHP解析JSON

如何使用php解析json数组并显示?

如何在PHP中解析json

php解析json数组