Вопрос

У меня есть этот Json из ASP MVC API У меня есть InvModel и LotModel

но когда я звоню

_InvFeed = [[InvModel alloc] initFromURLWithString:@"http://192.168.1.206/service/api/dto/inventory/1?p=Red%20Globe"
                                        completion:^(JSONModel *model, JSONModelError *err) 
        {
            NSLog(@"Inventory: %@", _InvFeed );
            NSLog(@"Error: %@",err);
        }];

Я не могу разобраться в этой ошибке:

Ошибка:Ошибка домена=JSONModelErrorDomain Code=1 "Недопустимые данные JSON:Попытка инициализировать объект JSONModel с помощью initWithDictionary:ошибка:но параметр словаря не был "NSDictionary"."
userInfo=0x109075ff0 {NSLocalizedDescription=Недопустимые данные JSON:Попытка инициализировать объект JSONModel с помощью initWithDictionary:ошибка:но параметр словаря не был "NSDictionary"., kJSONModelKeyPath=LotDTO}

JSONData

и вот JSONМодели для:ЛотДТО

#import "JSONModel.h"

@interface InvLotModel : JSONModel
@property (assign, nonatomic) int lotid;
@property (strong, nonatomic) NSDate* expdate;
@property (strong, nonatomic) NSString* lotserial;
@property (strong, nonatomic) NSDate* lastupddate;
@property (strong, nonatomic) NSString<Optional>* providerlotserial;
@property (assign, nonatomic) NSDecimal* qtyoriginal;
@property (assign, nonatomic) NSDecimal* qtyallocated;
@property (assign, nonatomic) NSDecimal* qtyavailable;
@property (assign, nonatomic) NSDecimal* qtyonhand;
@property (strong, nonatomic) NSDate* receiptdate;
@property (strong, nonatomic) NSString* linecomment;
@property (assign, nonatomic) NSDecimal* unitcost;
@property (strong, nonatomic) NSString* warehouse;
@end

А вот и модель инвентаризации

#import "JSONModel.h"
#import "InvLotModel.h"
@protocol InvModel @end
@interface InvModel : JSONModel
@property (assign, nonatomic) int id;
@property (strong, nonatomic) NSString* itemid;
@property (strong, nonatomic) NSString* description;
@property (strong, nonatomic) NSDate* createdate;
@property (strong, nonatomic) NSString* createuser;
@property (assign, nonatomic) float lastcost;
@property (assign, nonatomic) BOOL monitorlevel;
@property (assign, nonatomic) int minlevel;
@property (assign, nonatomic) int maxlevel;
@property (strong, nonatomic) NSString* gtin;
@property (assign, nonatomic) float weight;
@property (strong, nonatomic) NSString* uom;
@property (strong, nonatomic) NSString* sizes;
@property (strong, nonatomic) NSString* variety;
@property (strong, nonatomic) NSString <Optional>* bag;
@property (strong, nonatomic) NSString* style;
@property (strong, nonatomic) NSString* box;
@property (strong, nonatomic) NSString* label;
@property (strong, nonatomic) NSString* commodity;

@property (strong, nonatomic) InvLotModel* LotDTO;
@end
Это было полезно?

Решение

Я вижу две проблемы:

1) В InvModel класс, который вы определили LotDTO как отдельный объект, а не как массив.

2) В ответе JSON, который вы опубликовали, синтаксис для LotDTO мне не кажется допустимым JSON.По-видимому, это массив из LotDTO объекты, но это не соответствует синтаксису для массивов JSON (который вы можете проверить, например, здесь).

Другие советы

Обязательно отметьте любое свойство расширения в виде Ignore.Я столкнулся с такой проблемой, пытаясь скопировать модель.

Пожалуйста, замените это

@property (strong, nonatomic) InvLotModel* LotDTO;
.

с этим

@property (strong, nonatomic) NSArray<InvLotModel,ConvertOnDemand>* LotDTO;
.

Как официальные лица в JSONModel предлагают использовать Convertondemand для преобразования NSARRay в JSONModelarray в одном из их уроков, чтобы избежать ошибки в реализации.

Это может помочь вам: Нажмите здесь,

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top