如何将模型对象转换为JSON

时间:2016-07-08 11:49:53

标签: ios json

如何在不使用任何框架的情况下将模型对象转换为JSON格式?

@interface modelData : NSObject

// store name
@property(nonatomic,strong) NSString *name;

// store release date
@property(nonatomic,strong) NSString *releaseDate;

//store image
@property(nonatomic,strong)NSString *image;

// init with local json
-(instancetype)initWithName :(NSString*)name withReleaseDate:(NSString*)releaseDate withImage:(NSString*)imageName;

@end

1 个答案:

答案 0 :(得分:0)

要在没有其他框架的情况下执行此操作,您可以创建一些方法,如:

- (NSDictionary *)toJSON {
    return @{
        @"image" : self.image,
        @"releaseDate" : self.releaseDate,
        @"name" : self.name
    };
}

因此,如果对象看起来像modelData("imageName","01.05.2016","name"),则toJSON方法会为您提供:

{ "image" : "imageName", "releaseDate" : "01.05.2016", "name" : "name" }

所以

NSDictionary *dict = [modelObjectInstance toJSON]

为您提供NSDictionary对象。

然后你可以通过以下方式获得JSON字符串:

NSData *data = [NSJSONSerialization dataWithJSONObject:dict
                                                   options:NSJSONWritingPrettyPrinted // Pass 0 if you don't care about the readability of the generated string
                                                     error:&error];
if (! data) {
    NSLog(@"Error: %@", error);
} else {
    NSString *jsonString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
}

重要

请记住,当您的对象很简单时,它会起作用,就像您的示例一样(它只有NSString个属性)。如果您有一个更复杂的对象,其中包含一些自定义类属性。你必须提供更多的逻辑来以这种方式创建json。