使用JsonModel解析json

pre*_*tam 3 iphone ios jsonmodel

在获取json数组时遇到问题.

我正在使用JsonModel库进行json handelling.

我的json数据是:

[
    {
        "TSCard_id": 100,
        "TSCardBackend_id": "TSu1t1",
        "TSCard_date": "10/11/2013",
        "TSCard_resource_id": "",
        "TSCard_resource_name": "",
        "TSCard_job_id": "JOB_M2156 ",
        "TSCard_job_desc": "BAGARIA MILLIPORE - BOM ",
        "TSCard_activity_id": "B03",
        "TSCard_activity_desc": "Closing",
        "TSCard_hours": "4.0",
        "TSCard_chargeableflag": "0",
        "TSCard_desc": "Description:",
        "TSCard_syncflag": "0",
        "TSCard_flag": "",
        "user_id": "1"
    },
    {
        "TSCard_id": 101,
        "TSCardBackend_id": "TSu1t2",
        "TSCard_date": "12/11/2013",
        "TSCard_resource_id": "",
        "TSCard_resource_name": "",
        "TSCard_job_id": "JOB_B0002",
        "TSCard_job_desc": "ABB LIMITED - BLR ",
        "TSCard_activity_id": "NB01",
        "TSCard_activity_desc": "Admin  ",
        "TSCard_hours": "5.0",
        "TSCard_chargeableflag": "1",
        "TSCard_desc": "Description:",
        "TSCard_syncflag": "0",
        "TSCard_flag": "",
        "user_id": "1"
    }
]
Run Code Online (Sandbox Code Playgroud)

以上json有2个类型的对象 TSCard class

 //TSCard.h
#import <Foundation/Foundation.h>
#import <JSONModel.h>

@protocol TSCard @end

@interface TSCard : JSONModel

@property (nonatomic, retain) NSString  *TSCard_id;
@property (nonatomic, retain) NSString  *TSCardBackend_id;

@property (nonatomic, retain) NSString  *TSCard_date;
@property (nonatomic, retain) NSString  *TSCard_resource_id;
@property (nonatomic, retain) NSString  *TSCard_resource_name;
@property (nonatomic, retain) NSString  *TSCard_job_id;
@property (nonatomic, retain) NSString  *TSCard_job_desc;
@property (nonatomic, retain) NSString  *TSCard_activity_id;
@property (nonatomic, retain) NSString  *TSCard_activity_desc;
@property (nonatomic, retain) NSString  *TSCard_hours;
@property (nonatomic, retain) NSString  *TSCard_chargeableflag;
@property (nonatomic, retain) NSString  *TSCard_desc;
@property (nonatomic, retain) NSString  *TSCard_syncflag;
@property (nonatomic, retain) NSString  *TSCard_flag;
@property (nonatomic, retain) NSString  *user_id;

@end
Run Code Online (Sandbox Code Playgroud)

我正在为类型数组创建一个类 TSCard

 //GetCardData.h

#import <JSONModel.h>
#import "TSCard.h"


@interface GetCardData : JSONModel

@property(strong,nonatomic)NSArray<TSCard>* myDataArray;

@end
Run Code Online (Sandbox Code Playgroud)

然后我解析json如下:

NSError* err = nil;
GetCardData *c = [[GetCardData alloc] initWithString:jsonString error:&err];

    NSLog(@"%d",c.myDataArray.count);
Run Code Online (Sandbox Code Playgroud)

NSLog错误:错误域= JSONModelErrorDomain代码= 1"无效的JSON数据:尝试使用initWithDictionary初始化JSONModel对象:错误:但字典参数不是'NSDictionary'." UserInfo = 0x8265490 {NSLocalizedDescription =无效的JSON数据:尝试使用initWithDictionary初始化JSONModel对象:错误:但字典参数不是'NSDictionary'.}

我找不到我错的地方......任何人都可以建议正确使用JsonModel和解析jsonString到TSCard对象数组的正确方法.

Jan*_*mal 5

尝试使用以下代码来解析您的json并获取数组

NSMutableArray *yourArray = [TSCard arrayOfModelsFromDictionaries:jsonString];
Run Code Online (Sandbox Code Playgroud)

比创建和分配

GetCardData *objCardData = [[GetCardData alloc] init];
objCardData.myDataArray = yourArray;
Run Code Online (Sandbox Code Playgroud)

或者您需要更改您的JSONString,如下所示

   {
    "myDataArray": [
        {
            "TSCard_id": 100,
            "TSCardBackend_id": "TSu1t1",
            "TSCard_date": "10/11/2013",
            "TSCard_resource_id": "",
            "TSCard_resource_name": "",
            "TSCard_job_id": "JOB_M2156 ",
            "TSCard_job_desc": "BAGARIA MILLIPORE - BOM ",
            "TSCard_activity_id": "B03",
            "TSCard_activity_desc": "Closing",
            "TSCard_hours": "4.0",
            "TSCard_chargeableflag": "0",
            "TSCard_desc": "Description:",
            "TSCard_syncflag": "0",
            "TSCard_flag": "",
            "user_id": "1"
        },
        {
            "TSCard_id": 101,
            "TSCardBackend_id": "TSu1t2",
            "TSCard_date": "12/11/2013",
            "TSCard_resource_id": "",
            "TSCard_resource_name": "",
            "TSCard_job_id": "JOB_B0002",
            "TSCard_job_desc": "ABB LIMITED - BLR ",
            "TSCard_activity_id": "NB01",
            "TSCard_activity_desc": "Admin  ",
            "TSCard_hours": "5.0",
            "TSCard_chargeableflag": "1",
            "TSCard_desc": "Description:",
            "TSCard_syncflag": "0",
            "TSCard_flag": "",
            "user_id": "1"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

比你的代码肯定会有效.告诉我是否需要更多帮助.