将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: 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: 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 = ;
- 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二进制文件的更多相关文章
- JS 将对象转换成字符 字符串转换成json对象
//js对象 var user = { "name": "张学友", "address": "中国香港" }; //将对 ...
- Razor 将C#对象转换成Javascript对象, json还原被转码的字符 "·· HTML转义符
Razor 将C#对象转换成Javascript对象 在Razor中使用Json字符串,特殊字符被自动转义(如:\"->") @{ var jsonStr = Html.Ra ...
- json字符串转换成json对象,json对象转换成字符串,值转换成字符串,字符串转成值
一.json相关概念 json,全称为javascript object notation,是一种轻量级的数据交互格式.采用完全独立于语言的文本格式,是一种理想的数据交换格式. 同时,json是jav ...
- Newtonsoft.Json 把对象转换成json字符串
var resultJson = new { records = rowCount, page = pageindex, //总页数=(总页数+页大小-1)/页大小 total = (rowCount ...
- 前台 JSON对象转换成字符串 相互转换 的几种方式
在最近的工作中,使用到JSON进行数据的传递,特别是从前端传递到后台,前台可以直接采用ajax的data函数,按json格式传递,后台Request即可,但有的时候,需要传递多个参数,后台使用requ ...
- json 字符串转换成对象,对象转换成json字符串
json 字符串转换成对象,对象转换成json字符串 前端: 方法一: parseJSON方法: [注意jquery版本问题] var str = '{"name":&qu ...
- DataTabel DataSet 对象 转换成json
public class DataTableConvertJson { #region dataTable转换成Json格式 /// <summary> ...
- Java对象转换成xml对象和Java对象转换成JSON对象
1.把Java对象转换成JSON对象 apache提供的json-lib小工具,它可以方便的使用Java语言来创建JSON字符串.也可以把JavaBean转换成JSON字符串. json-lib的核心 ...
- JSON对象转换成JSON字符串
1.问题背景 有一个json对象,需要将其转换成json字符串 JSON.stringify(obj) 2.实现源码 <!DOCTYPE html PUBLIC "-//W3C//DT ...
随机推荐
- Linux的MySQL不能远程访问
1.首先,你要确认用户是否只允许localhost访问: 在linux下登录mysql mysql -uroot -p密码; use mysql; select `host`,`use ...
- 蝴蝶效应--由'sudo -s ...'引发的vim autocmd使用异常
1. 背景介绍 自加入RedHat起,我就把家里的台式机(Ubuntu 16.04 LTS)的默认登录用户veli切换成了huanli, 主要是为了跟公司的电脑配置对齐以方便未来WFH,但引发了一个v ...
- redis实战笔记(9)-第9章 降低内存占用
本章主要内容 1.短结构( short structure) 2.分片结构( shared structure) 3.打包存储二进制位和字节 本章将介绍3种非常有价值的降低Redis内存占用的 ...
- Java运用第三方开源jar包sigar.jar获取服务器信息
通过使用第三方开源jar包sigar.jar我们可以获得本地的信息 一.准备工作 (1)下载jar包和相关文件 资源链接:百度云:链接:https://pan.baidu.com/s/1nxccJHJ ...
- Ruby中Time的常用函数
Time的常用函数 时间对象. Time.now返回当前时间. 1.Time.at Time.at(time[, usec]) 返回time所指时间的Time对象. time可以是Time对象,也 ...
- nodejs --- 上传文件并保存到磁盘
先复习下整个请求的过程 const express = require('express'); const static = require('express-static'); const cook ...
- Percona-mysql server 5.5升级5.6
http://blog.csdn.net/lqx0405/article/details/50162557 系统环境: 操作系统:CentOS_6.5(64) My ...
- JBoss 实战(2)
转自:https://www.cnblogs.com/aiwz/p/6154591.html JBOSS HTTP的Thread Group概念 JBOSS是一个企业级的J2EE APP Contai ...
- Oracle.DataAccess.Client.OracleConnection.Open()报错System. NullReferenceException
使用ODAC链接Oracle数据库时,conn.Open()报错:未将对象的实例设置到对象引用. Oracle.DataAccess.dll版本:4.121.2.0 ODAC RELEASE 4 Or ...
- SpringBoot数据库访问(一)--------关系型数据库访问(RDBMS)
关系型数据库访问(RDBMS) 采用JdbcTemplate.MyBatis.JPA.Hibernate等技术. 一.JdbcTemplate工具 在pom.xml添加boot-starter-jdb ...