• 将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 = [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"}}

    几个需要注意的地方:

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

  • 相关阅读:
    Linux 命令查找文件中某个字段所存在的位置
    PHP in_array() 函数
    php一维数组如何追加到二维数组
    电脑切换窗口
    微擎前端逻辑判断的时弹框
    JDBC批量处理
    数据库事务
    处理BLOB
    JDBC自动生成主键值
    JDBC的元数据
  • 原文地址:https://www.cnblogs.com/YouXianMing/p/4202271.html
Copyright © 2020-2023  润新知