将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二进制文件的更多相关文章

  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. Python开发工具,服务器框架等

    python服务器框架:uWSGI WEB服务器.mod_WS.Meinheld.Gunicorn.CherryPy.Bjoern 查看python内部模块命令,内置函数,查看python已经安装的模 ...

  2. 业务ID 生成策略

    业务ID 生成策略,从技术上说,基本要借助一个集中式的引擎来帮忙实现. 为了扩大业务ID生成策略的并发问题,还有更为技巧性的提升. 先来介绍普遍的分布式ID生成策略: 1. 利用DB的自增主键 这里又 ...

  3. Eclipse安装fat jar的两种方式

    help >software updates >add/remove software>add>>add site填写name 和urlname:Fat Jarurl:h ...

  4. 常用工具说明--node.js是什么

    简介 如果您听说过 Node,或者阅读过一些文章,宣称 Node 是多么多么的棒,那么您可能会想:“Node 究竟是什么东西?” 即便是在参阅 Node 的主页之后,您甚至可能还是 不明白 Node ...

  5. pictureBox控件获得图片路径的三种方法及自适应大小属性

    1.绝对路径: this.pictureBox2.Image=Image.FromFile("D:\\001.jpg"); 2.相对路径: Application.StartupP ...

  6. nuget.org 无法加载源 https://api.nuget.org/v3/index.json 的服务索引

    今天添加新项目想添加几个工具包,打开NuGet就这样了  发生错误如下: [nuget.org] 无法加载源 https://api.nuget.org/v3/index.json 的服务索引. 响应 ...

  7. Spark你需要知道这些

    谈到 Spark,我们总是强调它比 Hadoop 更高效.为什么它可以更高效呢?是因为它优先使用内存存储?还是因为它拥有比 MapReduce 更简单高效的计算模型? 与 Hadoop 作业的区别 我 ...

  8. python 软件管理规范

    一.背景 软件开发是一个系统工程,当然编码实现是其中尤其重要的一个环节,关乎到功能需求的实现好坏.这个环节中除了编码这一硬功之外,与之相关的编码风格这一柔道,虽然没有直接决定功能的实现与否,但却在很大 ...

  9. Ajax 的几种方法应用

    一,js实现ajax异步请求,简单例子 try.jsp <%@ page language="java" import="java.util.*" pag ...

  10. java网络编程(UDP详解)

    UDP详解 一,TCP/IP协议栈中,TCP协议和UDP协议的联系和区别? 联系: TCP和UDP是TCP/IP协议栈中传输层的两个协议,它们使用网络层功能把数据包发送到目的地,从而为应用层提供网络服 ...