2016-04-27 196 views
-1

我正在使用objective-c并试图将JSON反序列化为名为Blog的自定义类的数组。所以下面的代码应该生成三个对象并将它们添加到一个对象数组中。我看过this tutorial,但仍遇到问题。将Objective-C反序列化为自定义对象的JSON

的JSON结构看起来是这样的:

{ 
    "-KGN0p1I4YFI2YNOcbv3" : { 
    "BlogDomain" : "blg1", 
    "BlogName" : "n1" 
    }, 
    "-KGN198bzC54opL47vUl" : { 
    "BlogDomain" : "blg2", 
    "BlogName" : "n2" 
    }, 
    "-KGN66aqkhIxBAKTcFCx" : { 
    "BlogDomain" : "blg3", 
    "BlogName" : "n3" 
    } 
} 

任何帮助,将不胜感激。

回答

1

请尝试下面的代码:

NSString* path = [[NSBundle mainBundle] pathForResource:@"JSON" ofType:@"json"]; 
    NSString* jsonString = [[NSString alloc] initWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil]; 

    NSData* jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding]; 

    NSError *error = nil; 
    NSDictionary *object = [NSJSONSerialization 
          JSONObjectWithData:jsonData 
          options:0 
          error:&error]; 

    if(! error) { 
     NSMutableArray *array = [[NSMutableArray alloc] init]; 

     for (NSString *dictionaryKey in object) { 
      Blog *oBlog = [[Blog alloc] init]; 
      oBlog.blogDomain = [[object valueForKey:dictionaryKey] objectForKey:@"BlogDomain"]; 
      oBlog.blogName = [[object valueForKey:dictionaryKey] objectForKey:@"BlogName"]; 
      [array addObject:oBlog]; 
     } 
    } else { 
     NSLog(@"Error in parsing JSON"); 
    } 

//Blog.h

#import <Foundation/Foundation.h> 

@interface Blog : NSObject 
@property (nonatomic, strong) NSString *blogDomain; 
@property (nonatomic, strong) NSString *blogName; 
@end 

//Blog.m

#import "Blog.h" 

@implementation Blog 

@end 

//JSON.json

{ 
"-KGN0p1I4YFI2YNOcbv3" : { 
"BlogDomain" : "blg1", 
"BlogName" : "n1" 
}, 
"-KGN198bzC54opL47vUl" : { 
"BlogDomain" : "blg2", 
"BlogName" : "n2" 
}, 
"-KGN66aqkhIxBAKTcFCx" : { 
"BlogDomain" : "blg3", 
"BlogName" : "n3" 
} 
} 

enter image description here

相关问题