首页 > 代码库 > 将Model对象转换成json文本或者json二进制文件

将Model对象转换成json文本或者json二进制文件

将Model对象转换成json文本或者json二进制文件

技术分享

https://github.com/casatwy/AnyJson

注意:经过测试,不能够直接处理字典或者数组

主要源码的注释

AJTransformer.h 与 AJTransformer.m

////  AJTransformer.h//  AnyJson////  Created by casa on 14-9-19.//  Copyright (c) 2014年 casa. All rights reserved.//#import <Foundation/Foundation.h>@protocol AJSerializable;@interface AJSerializer : NSObject/** *  将对象转换成json二进制文件 * *  @param object 对象 * *  @return json二进制文件 */+ (NSData *)jsonDataWithObject:(id)object;/** *  将对象转换成json字符串 * *  @param object 对象 * *  @return json字符串 */+ (NSString *)jsonStringWithObject:(id)object;+ (id)objectWithJsonData:(NSData *)jsonData targetObjectClass:(Class)targetObjectClass;+ (id)objectWithJsonString:(NSString *)jsonString targetObjectClass:(Class)targetObjectClass;@end
////  AJTransformer.m//  AnyJson////  Created by casa on 14-9-19.//  Copyright (c) 2014年 casa. All rights reserved.//#import "AJSerializer.h"#import "AJObject2JsonSerializer.h"#import "AJJson2ObjectSerializer.h"@implementation AJSerializer#pragma mark - public method+ (NSData *)jsonDataWithObject:(id)object{    id basicObject = [AJObject2JsonSerializer serializeToBasicObject:object];    return [NSJSONSerialization dataWithJSONObject:basicObject options:0 error:nil];}+ (NSString *)jsonStringWithObject:(id)object{    NSString *jsonString = [[NSString alloc] initWithData:[AJSerializer jsonDataWithObject:object] encoding:NSUTF8StringEncoding];    return jsonString;}+ (id)objectWithJsonData:(NSData *)jsonData targetObjectClass:(Class)targetObjectClass{    id jsonObject = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:nil];    return [AJJson2ObjectSerializer transformJsonObject:jsonObject toTargetObjectClass:targetObjectClass];}+ (id)objectWithJsonString:(NSString *)jsonString targetObjectClass:(Class)targetObjectClass{    NSData *jsonData =http://www.mamicode.com/ [jsonString dataUsingEncoding:NSUTF8StringEncoding];    return [AJSerializer objectWithJsonData:jsonData targetObjectClass:targetObjectClass];}@end

Model类:

////  Playground.h//  AnyJson////  Created by casa on 14-9-20.//  Copyright (c) 2014年 casa. All rights reserved.//#import <Foundation/Foundation.h>#import "OtherObject.h"@interface Playground : NSObject@property (nonatomic, assign) NSInteger testInteger;@property (nonatomic, strong) OtherObject *otherObject;@end
////  OtherObject.h//  AnyJson////  Created by casa on 14-9-21.//  Copyright (c) 2014年 casa. All rights reserved.//#import <Foundation/Foundation.h>@interface OtherObject : NSObject@property (nonatomic, assign) NSInteger  testInteger;@property (nonatomic, assign) BOOL       isTest;@property (nonatomic, strong) NSString  *name;@property (nonatomic, assign) char       testChar;@end

使用的源码:

ViewController.m

////  ViewController.m//  AnyJson////  Created by casa on 14-9-19.//  Copyright (c) 2014年 casa. All rights reserved.//#import "ViewController.h"#import "AnyJson.h"#import "Playground.h"#import "AJClassHelper.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad {    [super viewDidLoad];        Playground *playground   = [[Playground alloc] init];    OtherObject *otherObject = [[OtherObject alloc] init];    otherObject.testInteger  = 13;    otherObject.isTest       = YES;    otherObject.name         = @"casa";    otherObject.testChar     = c;    playground.otherObject   = otherObject;    NSString *jsonString     = [AJSerializer jsonStringWithObject:playground];        NSLog(@"json string is %@", jsonString);}@end

 

打印的信息:

2015-01-04 20:52:18.399 AnyJson[3825:149779] json string is {"testInteger":0,"otherObject":{"isTest":true,"name":"casa","testInteger":13,"testChar":"c"}}

 

几个需要注意的地方:

-此处是属性中包含了属性-

技术分享

 

将Model对象转换成json文本或者json二进制文件