JSONModel 잘못된 JSON 데이터
-
20-12-2019 - |
문제
나는 ASP MVC API 에이 JSON이 있습니다. 나는 인 모더와 로트 모델이 있습니다.
하지만 내가 전화할 때
_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 코드=1 "잘못된 JSON 데이터:initWithDictionary:error를 사용하여 JSONModel 객체 초기화를 시도합니다.그러나 사전 매개변수는 'NSDictionary'가 아닙니다."
UserInfo=0x109075ff0 {NSLocalizedDescription=잘못된 JSON 데이터:initWithDictionary:error를 사용하여 JSONModel 객체 초기화를 시도합니다.그러나 사전 매개 변수는 'nsdictionary'가 아니었다., KjsonModelKeyPath = lotdto}
다음은 JSONModel입니다.LotDTO
#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로 변환하여
이 도움이 될 수 있습니다 : 여기를 클릭하십시오