zoukankan      html  css  js  c++  java
  • 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/
  • 相关阅读:
    ZOJ 2588 Burning Bridges
    POJ 1966 ZOJ 2182 Cable TV Network
    HDU 5348 MZL's endless loop
    HDU 5352 MZL's City
    Tarjan算法求解无向连通图的割点、割边、点双连通分量和边双连通分量的模板
    ZOJ 1119 SPF
    HDU 3452 Bonsai
    HDU 1520 Anniversary party
    POJ 2239 Selecting Courses
    POJ 1144 Network
  • 原文地址:https://www.cnblogs.com/liuw-flexi/p/8927313.html
Copyright © 2011-2022 走看看