如何在Objective C中将Json字符串转换为NSMutableArray

时间:2016-02-25 15:44:18

标签: objective-c json

[{
    "ID": 122,
    "Name": "Mr.A",
    "Phone": "2222"
}, {
    "ID": 3332,
    "Name": "Mr.B",
    "Phone": "3333"
}, {
    "ID": 1021,
    "Name": "Mr.C",
    "Phone": "1313"
}, {
    "ID": 2221,
    "Name": "Dinesh",
    "Phone": "103"
}]

我这样编码,但它仍然不起作用!

NSString *urlString = [NSString stringWithFormat:@"My page"];

NSURL *url = [NSURL URLWithString:urlString];

NSData *data = [NSData dataWithContentsOfURL:url];

NSError *error;

NSMutableArray *json = (NSMutableArray*)[NSJSONSerialization JSONObjectWithData:data  options:kNilOptions error:&error];

NSLog(@"%@",json);

我的Json变量仍然无法获取数据。

2 个答案:

答案 0 :(得分:3)

打印错误。打印数据。 "它没有工作"没有丝毫的检查?

PS。该调用的结果将永远成为NSMutableArray,因此等待发生崩溃。演员表并没有使它成为NSMutableArray。

答案 1 :(得分:0)

@Sengvuthy Pheng, 以下是示例代码: 在我的ViewController.h中

@interface ViewController : UIViewController <NSXMLParserDelegate>

在我的ViewController.m

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    NSString *urlString = [NSString stringWithFormat:@"your url"];

    NSURL *url = [NSURL URLWithString:urlString];
    NSXMLParser *myParser = [[NSXMLParser alloc] initWithContentsOfURL:url];
    [myParser setDelegate:self];
    [myParser parse];
}

-(void)parser:(NSXMLParser*)parser didStartElement:(NSString*)elementName namespaceURI:(NSString*)namespaceURI qualifiedName:(NSString*)qualifiedName attributes:(NSDictionary*)attributeDict {
    NSLog(@"didStartElement");
}

- (NSString *)nameForNode:(NSDictionary *)node inDictionary:(NSDictionary *)dict {
    NSLog(@"nameforNode");
    return nil;
}

- (void)parser:(__unused NSXMLParser *)parser didEndElement:(__unused NSString *)elementName namespaceURI:(__unused NSString *)namespaceURI qualifiedName:(__unused NSString *)qName {
    NSLog(@"didEndElement");
}

- (void)parser:(__unused NSXMLParser *)parser foundCharacters:(NSString *)string {
    NSLog(@"foundCharacters");
    NSLog(@"JSONdata = %@", string);
    NSData* data = [string dataUsingEncoding:NSUTF8StringEncoding];
    NSError *e;
    NSArray *array = [NSJSONSerialization JSONObjectWithData:data options:nil error:&e];
    NSLog(@"jsonArray = %@", array);
}

- (void)parser:(__unused NSXMLParser *)parser foundCDATA:(NSData *)CDATABlock {
    NSLog(@"foundCDATA");
}

- (void)parser:(__unused NSXMLParser *)parser foundComment:(NSString *)comment {
    NSLog(@"foundComment");
}