• JSONModel的使用


    参考自:https://github.com/jsonmodel/jsonmodel

    1.基于名称的自动映射

    {
        "id": 123,
        "name": "Product name",
        "price": 12.95
    }
    @interface ProductModel : JSONModel
    @property (nonatomic) NSInteger id;
    @property (nonatomic) NSString *name;
    @property (nonatomic) float price;
    @end

    2. 模型级联(模型包括其他模型)

    {
        "orderId": 104,
        "totalPrice": 13.45,
        "product": {
            "id": 123,
            "name": "Product name",
            "price": 12.95
        }
    }
    @interface ProductModel : JSONModel
    @property (nonatomic) NSInteger id;
    @property (nonatomic) NSString *name;
    @property (nonatomic) float price;
    @end
    
    @interface OrderModel : JSONModel
    @property (nonatomic) NSInteger orderId;
    @property (nonatomic) float totalPrice;
    @property (nonatomic) ProductModel *product;
    @end

    3.模型集合

    {
        "orderId": 104,
        "totalPrice": 103.45,
        "products": [
            {
                "id": 123,
                "name": "Product #1",
                "price": 12.95
            },
            {
                "id": 137,
                "name": "Product #2",
                "price": 82.95
            }
        ]
    }
    @protocol ProductModel;
    
    @interface ProductModel : JSONModel
    @property (nonatomic) NSInteger id;
    @property (nonatomic) NSString *name;
    @property (nonatomic) float price;
    @end
    
    @interface OrderModel : JSONModel
    @property (nonatomic) NSInteger orderId;
    @property (nonatomic) float totalPrice;
    @property (nonatomic) NSArray <ProductModel> *products;
    @end

    或者

    @interface OrderModel : JSONModel
    @property (nonatomic) NSInteger orderId;
    @property (nonatomic) float totalPrice;
    @property (nonatomic) NSArray<ProductModel *> <ProductModel> *products;
    @end

    4.嵌套键映射

    {
        "orderId": 104,
        "orderDetails": {
            "name": "Product #1",
            "price": {
                "usd": 12.95
            }
        }
    }
    @interface OrderModel : JSONModel
    @property (nonatomic) NSInteger id;
    @property (nonatomic) NSString *productName;
    @property (nonatomic) float price;
    @end
    
    @implementation OrderModel
    
    + (JSONKeyMapper *)keyMapper
    {
        return [[JSONKeyMapper alloc] initWithModelToJSONDictionary:@{
            @"id": @"orderId",
            @"productName": @"orderDetails.name",
            @"price": @"orderDetails.price.usd"
        }];
    }
    
    @end

    5. 字段中带下划线

    {
        "order_id": 104,
        "order_product": "Product #1",
        "order_price": 12.95
    }
    @interface OrderModel : JSONModel
    @property (nonatomic) NSInteger orderId;
    @property (nonatomic) NSString *orderProduct;
    @property (nonatomic) float orderPrice;
    @end
    
    @implementation OrderModel
    
    + (JSONKeyMapper *)keyMapper
    {
        return [JSONKeyMapper mapperForSnakeCase];
    }
    
    @end

    6.可选属性(即可以缺失或为空)

    {
        "id": 123,
        "name": null,
        "price": 12.95
    }
    @interface ProductModel : JSONModel
    @property (nonatomic) NSInteger id;
    @property (nonatomic) NSString <Optional> *name;
    @property (nonatomic) float price;
    @property (nonatomic) NSNumber <Optional> *uuid;
    @end

    7.忽略的属性(即JSONModel完全忽略它们)

    {
        "id": 123,
        "name": null
    }
    @interface ProductModel : JSONModel
    @property (nonatomic) NSInteger id;
    @property (nonatomic) NSString <Ignore> *customProperty;
    @end

    8.标量类型可选

    {
        "id": null
    }
    @interface ProductModel : JSONModel
    @property (nonatomic) NSInteger id;
    @end
    
    @implementation ProductModel
    
    + (BOOL)propertyIsOptional:(NSString *)propertyName
    {
        if ([propertyName isEqualToString:@"id"])
            return YES;
    
        return NO;
    }
    
    @end

    9. 将模型导出为NSDictionary或JSON

    ProductModel *pm = [ProductModel new];
    pm.name = @"Some Name";
    
    // convert to dictionary
    NSDictionary *dict = [pm toDictionary];
    
    // convert to json
    NSString *string = [pm toJSONString];
    此文仅为鄙人学习笔记之用,朋友你来了,如有不明白或者建议又或者想给我指点一二,请私信我。liuw_flexi@163.com/QQ群:582039935. 我的gitHub: (学习代码都在gitHub) https://github.com/nwgdegitHub/
  • 相关阅读:
    13.numpy线性代数和绘图
    12-numpy矩阵
    11-numpy视图与副本
    10-numpy排序搜索
    day12 异常 模块 单例
    day11面向对象 多态 静态方法 (三)
    day 10 面向对象(=)
    day9 面向对象
    day8 文件
    day7 地址 名片管理系统
  • 原文地址:https://www.cnblogs.com/liuw-flexi/p/8927313.html
Copyright © 2020-2023  润新知