我正在使用objective-c 并尝试将JSON 反序列化为一个名为Blog 的自定义类的数组。所以下面的代码应该生成三个对象并将它们添加到一个对象数组中。我看过本教程,但仍然遇到问题。
JSON 结构如下所示:
{
"-KGN0p1I4YFI2YNOcbv3" : {
"BlogDomain" : "blg1",
"BlogName" : "n1"
},
"-KGN198bzC54opL47vUl" : {
"BlogDomain" : "blg2",
"BlogName" : "n2"
},
"-KGN66aqkhIxBAKTcFCx" : {
"BlogDomain" : "blg3",
"BlogName" : "n3"
}
}
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激。
请尝试以下代码:
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");
}
Run Code Online (Sandbox Code Playgroud)
//博客.h
#import <Foundation/Foundation.h>
@interface Blog : NSObject
@property (nonatomic, strong) NSString *blogDomain;
@property (nonatomic, strong) NSString *blogName;
@end
Run Code Online (Sandbox Code Playgroud)
//博客.m
#import "Blog.h"
@implementation Blog
@end
Run Code Online (Sandbox Code Playgroud)
//JSON.json
{
"-KGN0p1I4YFI2YNOcbv3" : {
"BlogDomain" : "blg1",
"BlogName" : "n1"
},
"-KGN198bzC54opL47vUl" : {
"BlogDomain" : "blg2",
"BlogName" : "n2"
},
"-KGN66aqkhIxBAKTcFCx" : {
"BlogDomain" : "blg3",
"BlogName" : "n3"
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2949 次 |
| 最近记录: |