大佬教程收集整理的这篇文章主要介绍了iOS JSON序列化用于基于NSObject的类,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
这是一个棘手的问题,因为可以放入JsON的唯一数据是简单的对象(请考虑NsString,NSArray,NSnumber…),而不是自定义类或标量类型。为什么?如果不构建各种条件语句来将所有这些数据类型包装到这些对象类型中,则解决方案将是这样的:
//at the top…
#import <objC/runtime.h>
NSMutableDictionary *muteDictionary = [NSMutableDictionary Dictionary];
ID YourClass = objc_getClass("YOURCLASSname");
unsigned int outCount, i;
objc_property_t *propertIEs = class_copyPropertyList(YourClass, &outCount);
for (i = 0; i < outCount; i++) {
objc_property_t property = propertIEs[i];
NsString *propertyname = [NsString StringWithCString:property_getname(property) enCoding:NSUTF8StringEnCoding];
SEL propertySELEctor = NSSELEctorFromString(propertyName);
if ([classInstance respondsToSELEctor:propertySELEctor]) {
[muteDictionary SETVALue:[classInstance performSELEctor:propertySELEctor] forKey:propertyname];
}
}
NSError *JsonError = nil;
NSData *JsonData = [NSJsONserialization dataWithJsONObject:muteDictionary options:0 error:&JsonError];
尽管由于我之前所说,这很棘手。如果您有任何标量类型或自定义对象,那么整个过程就会崩溃。如果真的需要进行这样的事情,我建议您花些时间并查看Ricard的链接,这些链接使您可以查看有助于将值包装到NSDictionary安全对象中的条件语句的属性类型。
我想对自己的自定义类进行JSON序列化。我正在使用Objective-C / iOS5。我想要执行以下操作:
Person* person = [self getPerson ]; // Any custom object,NOT based on NSDictionary
NSString* jsonRepresentation = [JsonWriter StringWithObject:person ];
Person* clone = [JsonReader objectFromJson: jsonRepresentation withClass:[Person Class]];
看来NSJSONserialization(和其他几个库)要求’person’类基于NSDictionary等。我想要一些可以序列化我想要定义的自定义对象的对象(在合理范围内)。
假设Person.h看起来像这样:
#import <Foundation/Foundation.h>
@interface Person : NSObject
@property NSString* firstname;
@property NSString* surname;
@end
我希望为实例生成的JSON与以下内容相似:
{"firstname":"jenson","surname":"Button"}
我的应用程序使用ARC。我需要可以使用对象进行序列化和反序列化的东西。
非常感谢。
以上是大佬教程为你收集整理的iOS JSON序列化用于基于NSObject的类全部内容,希望文章能够帮你解决iOS JSON序列化用于基于NSObject的类所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。