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
}

results matching ""

    No results matching ""