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

https://github.com/casatwy/AnyJson

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

主要源码的注释

AJTransformer.h 与 AJTransformer.m

  1. //
  2. // AJTransformer.h
  3. // AnyJson
  4. //
  5. // Created by casa on 14-9-19.
  6. // Copyright (c) 2014年 casa. All rights reserved.
  7. //
  8.  
  9. #import <Foundation/Foundation.h>
  10.  
  11. @protocol AJSerializable;
  12.  
  13. @interface AJSerializer : NSObject
  14.  
  15. /**
  16. * 将对象转换成json二进制文件
  17. *
  18. * @param object 对象
  19. *
  20. * @return json二进制文件
  21. */
  22. + (NSData *)jsonDataWithObject:(id)object;
  23.  
  24. /**
  25. * 将对象转换成json字符串
  26. *
  27. * @param object 对象
  28. *
  29. * @return json字符串
  30. */
  31. + (NSString *)jsonStringWithObject:(id)object;
  32.  
  33. + (id)objectWithJsonData:(NSData *)jsonData targetObjectClass:(Class)targetObjectClass;
  34. + (id)objectWithJsonString:(NSString *)jsonString targetObjectClass:(Class)targetObjectClass;
  35.  
  36. @end
  1. //
  2. // AJTransformer.m
  3. // AnyJson
  4. //
  5. // Created by casa on 14-9-19.
  6. // Copyright (c) 2014年 casa. All rights reserved.
  7. //
  8.  
  9. #import "AJSerializer.h"
  10. #import "AJObject2JsonSerializer.h"
  11. #import "AJJson2ObjectSerializer.h"
  12.  
  13. @implementation AJSerializer
  14.  
  15. #pragma mark - public method
  16. + (NSData *)jsonDataWithObject:(id)object
  17. {
  18. id basicObject = [AJObject2JsonSerializer serializeToBasicObject:object];
  19. return [NSJSONSerialization dataWithJSONObject:basicObject options: error:nil];
  20. }
  21.  
  22. + (NSString *)jsonStringWithObject:(id)object
  23. {
  24. NSString *jsonString = [[NSString alloc] initWithData:[AJSerializer jsonDataWithObject:object] encoding:NSUTF8StringEncoding];
  25. return jsonString;
  26. }
  27.  
  28. + (id)objectWithJsonData:(NSData *)jsonData targetObjectClass:(Class)targetObjectClass
  29. {
  30. id jsonObject = [NSJSONSerialization JSONObjectWithData:jsonData options: error:nil];
  31. return [AJJson2ObjectSerializer transformJsonObject:jsonObject toTargetObjectClass:targetObjectClass];
  32. }
  33.  
  34. + (id)objectWithJsonString:(NSString *)jsonString targetObjectClass:(Class)targetObjectClass
  35. {
  36. NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
  37. return [AJSerializer objectWithJsonData:jsonData targetObjectClass:targetObjectClass];
  38. }
  39.  
  40. @end

Model类:

  1. //
  2. // Playground.h
  3. // AnyJson
  4. //
  5. // Created by casa on 14-9-20.
  6. // Copyright (c) 2014年 casa. All rights reserved.
  7. //
  8.  
  9. #import <Foundation/Foundation.h>
  10. #import "OtherObject.h"
  11.  
  12. @interface Playground : NSObject
  13.  
  14. @property (nonatomic, assign) NSInteger testInteger;
  15. @property (nonatomic, strong) OtherObject *otherObject;
  16.  
  17. @end
  1. //
  2. // OtherObject.h
  3. // AnyJson
  4. //
  5. // Created by casa on 14-9-21.
  6. // Copyright (c) 2014年 casa. All rights reserved.
  7. //
  8.  
  9. #import <Foundation/Foundation.h>
  10.  
  11. @interface OtherObject : NSObject
  12.  
  13. @property (nonatomic, assign) NSInteger testInteger;
  14. @property (nonatomic, assign) BOOL isTest;
  15. @property (nonatomic, strong) NSString *name;
  16. @property (nonatomic, assign) char testChar;
  17.  
  18. @end

使用的源码:

ViewController.m

  1. //
  2. // ViewController.m
  3. // AnyJson
  4. //
  5. // Created by casa on 14-9-19.
  6. // Copyright (c) 2014年 casa. All rights reserved.
  7. //
  8.  
  9. #import "ViewController.h"
  10. #import "AnyJson.h"
  11. #import "Playground.h"
  12. #import "AJClassHelper.h"
  13.  
  14. @interface ViewController ()
  15.  
  16. @end
  17.  
  18. @implementation ViewController
  19.  
  20. - (void)viewDidLoad {
  21. [super viewDidLoad];
  22.  
  23. Playground *playground = [[Playground alloc] init];
  24. OtherObject *otherObject = [[OtherObject alloc] init];
  25. otherObject.testInteger = ;
  26. otherObject.isTest = YES;
  27. otherObject.name = @"casa";
  28. otherObject.testChar = 'c';
  29.  
  30. playground.otherObject = otherObject;
  31. NSString *jsonString = [AJSerializer jsonStringWithObject:playground];
  32.  
  33. NSLog(@"json string is %@", jsonString);
  34. }
  35.  
  36. @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二进制文件的更多相关文章

  1. JS 将对象转换成字符 字符串转换成json对象

    //js对象 var user = { "name": "张学友", "address": "中国香港" }; //将对 ...

  2. Razor 将C#对象转换成Javascript对象, json还原被转码的字符 &quot·· HTML转义符

    Razor 将C#对象转换成Javascript对象 在Razor中使用Json字符串,特殊字符被自动转义(如:\"->") @{ var jsonStr = Html.Ra ...

  3. json字符串转换成json对象,json对象转换成字符串,值转换成字符串,字符串转成值

    一.json相关概念 json,全称为javascript object notation,是一种轻量级的数据交互格式.采用完全独立于语言的文本格式,是一种理想的数据交换格式. 同时,json是jav ...

  4. Newtonsoft.Json 把对象转换成json字符串

    var resultJson = new { records = rowCount, page = pageindex, //总页数=(总页数+页大小-1)/页大小 total = (rowCount ...

  5. 前台 JSON对象转换成字符串 相互转换 的几种方式

    在最近的工作中,使用到JSON进行数据的传递,特别是从前端传递到后台,前台可以直接采用ajax的data函数,按json格式传递,后台Request即可,但有的时候,需要传递多个参数,后台使用requ ...

  6. json 字符串转换成对象,对象转换成json字符串

    json   字符串转换成对象,对象转换成json字符串 前端: 方法一: parseJSON方法:   [注意jquery版本问题] var str = '{"name":&qu ...

  7. DataTabel DataSet 对象 转换成json

    public class DataTableConvertJson    { #region dataTable转换成Json格式        /// <summary>         ...

  8. Java对象转换成xml对象和Java对象转换成JSON对象

    1.把Java对象转换成JSON对象 apache提供的json-lib小工具,它可以方便的使用Java语言来创建JSON字符串.也可以把JavaBean转换成JSON字符串. json-lib的核心 ...

  9. JSON对象转换成JSON字符串

    1.问题背景 有一个json对象,需要将其转换成json字符串 JSON.stringify(obj) 2.实现源码 <!DOCTYPE html PUBLIC "-//W3C//DT ...

随机推荐

  1. Linux的MySQL不能远程访问

    1.首先,你要确认用户是否只允许localhost访问: 在linux下登录mysql mysql -uroot -p密码;     use mysql;     select `host`,`use ...

  2. 蝴蝶效应--由'sudo -s ...'引发的vim autocmd使用异常

    1. 背景介绍 自加入RedHat起,我就把家里的台式机(Ubuntu 16.04 LTS)的默认登录用户veli切换成了huanli, 主要是为了跟公司的电脑配置对齐以方便未来WFH,但引发了一个v ...

  3. redis实战笔记(9)-第9章 降低内存占用

    本章主要内容   1.短结构( short structure) 2.分片结构( shared structure) 3.打包存储二进制位和字节   本章将介绍3种非常有价值的降低Redis内存占用的 ...

  4. Java运用第三方开源jar包sigar.jar获取服务器信息

    通过使用第三方开源jar包sigar.jar我们可以获得本地的信息 一.准备工作 (1)下载jar包和相关文件 资源链接:百度云:链接:https://pan.baidu.com/s/1nxccJHJ ...

  5. Ruby中Time的常用函数

      Time的常用函数 时间对象. Time.now返回当前时间. 1.Time.at Time.at(time[, usec]) 返回time所指时间的Time对象. time可以是Time对象,也 ...

  6. nodejs --- 上传文件并保存到磁盘

    先复习下整个请求的过程 const express = require('express'); const static = require('express-static'); const cook ...

  7. Percona-mysql server 5.5升级5.6

    http://blog.csdn.net/lqx0405/article/details/50162557   系统环境:      操作系统:CentOS_6.5(64)            My ...

  8. JBoss 实战(2)

    转自:https://www.cnblogs.com/aiwz/p/6154591.html JBOSS HTTP的Thread Group概念 JBOSS是一个企业级的J2EE APP Contai ...

  9. Oracle.DataAccess.Client.OracleConnection.Open()报错System. NullReferenceException

    使用ODAC链接Oracle数据库时,conn.Open()报错:未将对象的实例设置到对象引用. Oracle.DataAccess.dll版本:4.121.2.0 ODAC RELEASE 4 Or ...

  10. SpringBoot数据库访问(一)--------关系型数据库访问(RDBMS)

    关系型数据库访问(RDBMS) 采用JdbcTemplate.MyBatis.JPA.Hibernate等技术. 一.JdbcTemplate工具 在pom.xml添加boot-starter-jdb ...