Serialize JSONModel - 如何在iOS中将自定义对象转换为JSON?

时间:2017-05-19 05:50:25

标签: ios objective-c json jsonmodel

如何使用JSONModel序列化自定义对象?

@property(nonatomic,strong) NSString<Optional> * tag_post_type;
@property(nonatomic,strong) NSString<Optional> * tag_users_type;
@property(nonatomic,strong) NSArray<Optional> * tags;
@property(nonatomic,strong) NSMutableArray<TagMediaModel*>* tag_posts;
@property(nonatomic,strong) NSMutableArray<TagLocationModel*>* locations;

我尝试使用适用于iOS的JSONModel框架从我的自定义Object中创建一个JSON文件。我收到错误:

EXCEPTION: Invalid type in JSON write (TagMediaModel)

当我调用JSONString方法时,我遇到了这个问题。

[tagAutomaticModel toJSONString];

这是模型数据:

 locations =     (
    "<TagLocationModel> \n   [id]: 780307344\n   [name]: Hotel Central Park, india\n</TagLocationModel>",
    "<TagLocationModel> \n   [id]: 463004401\n   [name]: Miraj Cinema new year\n</TagLocationModel>",
    "<TagLocationModel> \n   [id]: 246187965\n   [name]: Surya Treasure Island asia\n</TagLocationModel>",
);
"tag_posts" =     (
    "<TagMediaModel> \n   [media_code]: BS0tQeFhU_Z\n   [media_id]: 1492016420475981785\n   [media_url]: https://scontent.cdninstagram.com/t51.2885-15/e15/17881459_...\n   [media_type]: I\n</TagMediaModel>"
);

2 个答案:

答案 0 :(得分:1)

@property(nonatomic,strong) NSMutableArray<TagMediaModel>* tag_posts;

如上所述进行了一些更改,只是删除了TagMediaModel中的星号。

答案 1 :(得分:0)

NSMutableArray包含协议后的尖括号。正如@ R.Mohan所说,您需要remove * pointer并使用without pointer

  1. 协议必须到位。因此,请在相应的班级中添加@protocol tag_posts@protocol locations
  2. EXCEPTION: Invalid type in JSON write (TagMediaModel)我猜您是将json转换为自定义类一次或多次。只做一次。它将解决您的问题。