Json Parse
Pros: 跨平台, 易于解析
{"name":"Jack", "age":10}
{"name":["jack","rose", "jim"]}
解析:JSON 转 OC
Jason OC/Swift
大括号 {} NSDictionary, Dictionary
中括号 [] NSArray, Array
双引号 “” NSString, String
数字 10 10.8 NSNumber, Int/Float/Double
NSJSONSerialization 系统自带解析JSON
- (NSArray*) apps {
if (_apps == nil) {
NSURLSessionTask* task = [[NSURLSession sharedSession] dataTaskWithURL:[NSURL URLWithString:@"http://120.25.226.186:32812/video?type=JSON"] completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
NSArray* dictArray = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil][@"videos"];
NSMutableArray* tmpArray = [NSMutableArray array];
for (NSDictionary* dict in dictArray) {
[tmpArray addObject:[FBApp appWithDict:dict]];
}
_apps = tmpArray;
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
[self.tableView reloadData];
}];
}];
[task resume];
}
return _apps;
}
http://120.25.226.186:32812/video
func fetch(withTestJson file: String) -> Array<LineModel>? {
// get path
guard let path = Bundle.main.path(forResource: file, ofType: "json") else {
print("BaseD.C: not such testJson file")
return nil
}
// get data json
let jsonData = try! Data(contentsOf: URL(fileURLWithPath: path), options: .alwaysMapped)
let json = try! JSONSerialization.jsonObject(with: jsonData, options: .mutableLeaves)
// parse json
guard let lines = json as? Dictionary<String, Any>,
let linesData = lines[LinesKey.lines]
else {
return nil
}
// to models
var models = Array<LineModel>()
if let jsonArray = linesData as? Array<Any> {
for element in jsonArray {
if let modelDict = element as? Dictionary<String, AnyObject>,
let model = LineModel(dict: modelDict) {
models.append(model)
}
}
}
return models
}