【问题标题】:How should I parse array of array of object in Objective C using JSONModel?我应该如何使用 JSONModel 解析 Objective C 中的对象数组?
【发布时间】:2018-02-01 23:32:06
【问题描述】:

我有一个 json 对象,其中包含对象数组的数组。 我需要使用 JSONModel 解析它。

例如json:

    {
      "object": [
        [
          {
            "a": 1,
            "b": 2
          },
          {
            "c": 1,
            "d": 4
          }
        ],
        [
          {
            "a": 3,
            "b": 6
          },
          {
            "e": 2,
            "f": 3
          }
        ]
      ]
    }

我应该如何在我的 JSONModel 中声明它? 像这样声明是给我作为 NSDictionary 的 NSArray。

    @interface SomeClass : JSONModel

    @property (nonatomic, retain) NSArray<NSArray<AphabetJsonModelClass> *> *object;

    @end

【问题讨论】:

    标签: objective-c arrays json parsing jsonmodel


    【解决方案1】:

    您应该像这样使用自定义 getter/setter。

    @interface SomeClass : JSONModel
    @property (nonatomic, copy) NSArray<Optional> *object;// NSArray<ABPlusCDModel *> * 
    
    @end
    
    @implementation SomeClass
    - (void)setObjectWithNSArray:(NSArray *)array {
        NSMutableArray *list = [NSMutableArray arrayWithCapacity:array.count];
        [array enumerateObjectsUsingBlock:^(NSArray *obj, NSUInteger idx, BOOL *stop) {
            if (![obj isKindOfClass:[NSArray class]]) {
                return;
            }
    
            NSMutableArray *l = [NSMutableArray arrayWithCapacity:obj.count];
            [obj enumerateObjectsUsingBlock:^(NSDictionary *o, NSUInteger idx, BOOL *stop) {
                ABPlusCDModel *m = [[ABPlusCDModel alloc] initWithDictionary:o error:nil];
                if (m) {
                    [l addObject:m];
                }
            }];
    
            [list addObject:l.copy];
        }];
    
        self.object = list;
    }
    
    - (NSArray *)JSONObjectForObject {
        NSMutableArray *list = [NSMutableArray arrayWithCapacity:self.object.count];
        [self.group enumerateObjectsUsingBlock:^(NSArray *a, NSUInteger idx, BOOL *stop) {
            NSMutableArray *l = [NSMutableArray arrayWithCapacity:a.count];
            [a enumerateObjectsUsingBlock:^(ABPlusCDModel *o, NSUInteger idx, BOOL *stop) {
                [l addObject:o.toDictionary];
            }];
            [list addObject:l];
        }];
        return list.copy;
    }
    

    【讨论】:

      猜你喜欢
      • 2012-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-21
      • 1970-01-01
      • 2012-10-17
      相关资源
      最近更新 更多