JSONParser 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
JSONParser 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
JSONParser 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
JSONParser 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
JSONParser 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !

软件简介

iOS数据转化组件 (JSONParser),支持JSON字符串、模型、字典、模型数组、字典数组之间相互的转化

为什么要写转化组件?

其实github上已经有很多优秀的JSON转化库,我见过SBJSON和JSONModel这两个库就写的着实不错, 那我为什么还要写多一个库出来呢?

  • 因为我要写一个比他们更强大的库(说起来挺害羞的)

优势

  • 1.和JSONModel相比, 我的库只是单纯作为转化类,并不需要模型类继承JSONModel类,

  • 并且我写出来的库,可以自动转化(NSDate *)格式

  • 2.Hbb_JSONParser还支持"类中类"的转化

声明: 所有的转化都是一句代码(为了方便阅读才写多了几行代码)

转化的实例类

@interface MyObject : NSObject

@property (nonatomic, strong) NSDate *date;
@property (nonatomic, assign) int normalInt;
@property (nonatomic, assign) long normalLong;
@property (nonatomic, assign) NSInteger integer;
@property (nonatomic, strong) MyInnerObject *myInnerObject; //"类中类"
@property (nonatomic, assign) CGFloat cgfloat;
@property (nonatomic, assign) float normalFloat;

@property (nonatomic, strong) NSArray *array;
@property (nonatomic, strong) NSDictionary *dictionary;
@property (nonatomic, strong) NSString *str;
@end

@interface MyInnerObject : NSObject
@property (nonatomic, strong) NSString *str;
@property (nonatomic, strong) NSString *str2;

@end

支持的功能

1、json字符串转化为字典

 NSString *jsonStr = @"{\"date\":\"2014-06-07 12:34:54\",\"normalInt\":2 , \"normalLong\":24, \"myInnerObject\":{\"str\":\"字符串1\"}, \"cgfloat\":1.0, \"normalFloat\":2.0, \"array\":[\"1\", \"2\"], \"dictionary\":{\"key\":\"value\"} }";

 Hbb_JSONParser *hbb_JSONParser = [[Hbb_JSONParser alloc] init];
 //json字符串转化为字典 
 MyObject *myObject = [hbb_JSONParser jsonStringToDictionary:jsonStr];

2、json字符串转化为字典数组

  NSString *jsonArrayStr = @"[{\"date\":\"\",\"normalInt\":2 , \"normalLong\":24, \"myInnerObject\":{\"str\":\"字符串1\"}, \"cgfloat\":1.0, \"normalFloat\":2.0, \"array\":[\"1\", \"2\"], \"dictionary\":{\"key\":\"value\"} }, {\"date\":\"2014-06-07 12:34:54\",\"normalInt\":2 , \"normalLong\":24, \"myInnerObject\":{\"str\":\"字符串1\"}, \"cgfloat\":1.0, \"normalFloat\":2.0, \"array\":[\"1\", \"2\"], \"dictionary\":{\"key\":\"value\"} }, {\"date\":\"2014-06-07 12:34:54\",\"normalInt\":2 , \"normalLong\":24, \"myInnerObject\":{\"str\":\"字符串1\"}, \"cgfloat\":1.0, \"normalFloat\":2.0, \"array\":[\"1\", \"2\"], \"dictionary\":{\"key\":\"value\"} }]";

 Hbb_JSONParser *hbb_JSONParser = [[Hbb_JSONParser alloc] init];

 //json字符串转化为字典数组
 NSArray *beanArray = [hbb_JSONParser jsonStringToDictionaryArray:jsonArrayStr];

3、json字符串转化为模型

  NSString *jsonStr = @"{\"date\":\"2014-06-07 12:34:54\",\"normalInt\":2 , \"normalLong\":24, \"myInnerObject\":{\"str\":\"字符串1\"}, \"cgfloat\":1.0, \"normalFloat\":2.0, \"array\":[\"1\", \"2\"], \"dictionary\":{\"key\":\"value\"} }";

 Hbb_JSONParser *hbb_JSONParser = [[Hbb_JSONParser alloc] init];

 //json字符串转化为模型
 MyObject *myObject = [hbb_JSONParser jsonStringToBean:jsonStr cls:[MyObject class]];

4、json字符串转化为模型数组

  NSString *jsonArrayStr = @"[{\"date\":\"\",\"normalInt\":2 , \"normalLong\":24, \"myInnerObject\":{\"str\":\"字符串1\"}, \"cgfloat\":1.0, \"normalFloat\":2.0, \"array\":[\"1\", \"2\"], \"dictionary\":{\"key\":\"value\"} }, {\"date\":\"2014-06-07 12:34:54\",\"normalInt\":2 , \"normalLong\":24, \"myInnerObject\":{\"str\":\"字符串1\"}, \"cgfloat\":1.0, \"normalFloat\":2.0, \"array\":[\"1\", \"2\"], \"dictionary\":{\"key\":\"value\"} }, {\"date\":\"2014-06-07 12:34:54\",\"normalInt\":2 , \"normalLong\":24, \"myInnerObject\":{\"str\":\"字符串1\"}, \"cgfloat\":1.0, \"normalFloat\":2.0, \"array\":[\"1\", \"2\"], \"dictionary\":{\"key\":\"value\"} }]";

 //json字符串转化为模型数组
  Hbb_JSONParser *hbb_JSONParser = [[Hbb_JSONParser alloc] init];
 NSArray *beanArray = [hbb_JSONParser jsonStringToBeanArray:jsonArrayStr cls:[MyObject class]];

5、字典转化为模型

  NSDcitionary *dict = {whatever dictionary you just created}

  //字典转化为模型
   Hbb_JSONParser *hbb_JSONParser = [[Hbb_JSONParser alloc] init];
    MyObject *myObject = [hbb_JSONParser dictionaryToBean:dict cls:[MyObject class]];

6、字典数组转化为模型数组

 NSArray *dictArray = {whatever dictionary array you just created}

 //字典数组转化为模型数组
  Hbb_JSONParser *hbb_JSONParser = [[Hbb_JSONParser alloc] init];
 NSArray *beanArray =[hbb_JSONParser dictionaryArrayToBeanArray:dictArray cls:[MyObject class]];

7、字典转化为json字符串

  NSDcitionary *dict = {whatever dictionary you just created}

  //字典转化为json字符串
     Hbb_JSONParser *hbb_JSONParser = [[Hbb_JSONParser alloc] init];
  NSString *jsonString = [hbb_JSONParser dictionaryToJsonString:dict];

8、字典数组转化json字符串

 NSArray *dictArray = {whatever dictionary array you just created}

 //字典数组转化json字符串
  Hbb_JSONParser *hbb_JSONParser = [[Hbb_JSONParser alloc] init];

 NSString *jsonArrayStr = [hbb_JSONParser dictionaryArrayToJsonString:dictArray];

9、模型转化为字典

 MyObject *myObject = {initialize a MyObject object }

 //模型转化为字典
 Hbb_JSONParser *hbb_JSONParser = [[Hbb_JSONParser alloc] init];
 NSDictionary *dict = [hbb_JSONParser beanToDictionary:myObject];

10、模型数组转化为字典数组

MyObject *myObject = [[MyObject alloc] init];
myObject.normalFloat = 2.0;
 NSArray *beanArray = @[myObject];

 //模型数组转化为字典数组
  Hbb_JSONParser *hbb_JSONParser = [[Hbb_JSONParser alloc] init];
 NSArray *dictArray = [hbb_JSONParser beanArrayToDictionaryArray:beanArray];

11、模型转化为json字符串

MyObject *myObject = [[MyObject alloc] init];
myObject.normalFloat = 2.0;

 //模型转化为json字符串
  Hbb_JSONParser *hbb_JSONParser = [[Hbb_JSONParser alloc] init];
NSString *jsonString = [hbb_JSONParser beanToJsonString:myObject];

12、模型数组转化为json字符串

MyObject *myObject = [[MyObject alloc] init];
myObject.normalFloat = 2.0;
NSArray *beanArray = @[myObject];

//模型数组转化为json字符串
Hbb_JSONParser *hbb_JSONParser = [[Hbb_JSONParser alloc] init];
NSString *jsonArrayString = [self.hbb_JSONParser beanArrayToJsonString:self.myObjectArray cls:[MyObject class]];
展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (0)

加载中
更多评论
暂无内容
发表了博客
2020/07/28 12:13

4. JSON字符串是如何被解析的?JsonParser了解一下

公司不是你家,领导不是你妈。本文已被 https://www.yourbatman.cn 收录,里面一并有Spring技术栈、MyBatis、JVM、中间件等小而美的专栏供以免费学习。关注公众号【BAT的乌托邦】逐个击破,深入掌握,拒绝浅尝辄止。 目录 前言 版本约定 正文 最简使用Demo 组合方法 自动绑定 JsonToken JsonParser的Feature 底层I/O流相关 AUTO_CLOSE_SOURCE(true) 支持非标准格式 ALLOW_COMMENTS(false) ALLOW_YAML_COMMENTS(false) ALLOW_UNQ...

0
0
发表于程序人生专区
2020/07/27 08:21

4. JSON字符串是如何被解析的?JsonParser了解一下

点击上方“ BAT的乌托邦 ”,选择“ 设为星标 ” 后台回复“ 专栏 ”,开启专栏模式学习 前言 各位好,我是A哥(YourBatman)。上篇文章:3. 懂了这些,方敢在简历上说会用Jackson写JSON 聊完,「流式API」的写部分可以认为你已完全掌握了,本文了解它读的部分。 版本约定 Jackson版本: 2.11.0 Spring Framework版本: 5.2.6.RELEASE Spring Boot版本: 2.3.0.RELEASE ❝ 小贴士:截止到本文,本系列「前面」所有示例都只仅仅导入...

0
0
发表了博客
2018/04/07 15:35

解决yii2中 Class yii/web/JsonParser does not exist, ReflectionException问题

最近在调试RESTful API示例时,出现以下错误: 1 { 2 "name": "Exception", 3 "message": "Class yii/web/JsonParser does not exist", 4 "code": -1, 5 "type": "ReflectionException", 6 "file": "/Users/Desktop/workspaces/php/yii2-ims/vendor/yiisoft/yii2/di/Container.php", 7 "line": 426, 8 "stack-trace": [ 9 "#0 /Users/Desktop/workspaces/php/yii2-ims/v...

0
0
发表了博客
2019/12/29 01:22

[享学Jackson] 二、jackson-core之流式API与JsonFactory、JsonGenerator、JsonParser

做难事必有所得 –> 返回专栏总目录 <– 代码下载地址:https://github.com/f641385712/jackson-learning 目录 前言 正文 概念解释:流式、增量模式、JsonToken Demo示例 JsonGenerator 写 JsonParser 读 核心API精讲 JsonFactory SPI(ServiceLoader)方式创建实例 JsonToken JsonGenerator write方法说明 JsonParser readValueAs()系列方法Demo示例 总结 关注A哥 前言 jackson-core是三大核心模块之一,并且它是核心中的核心,它...

0
0
发表于程序人生专区
01/04 16:04

解决json反序列化对象类型不一致问题

问题描述: 我们经常在控制层使用对象来接收json数据,当对象里面定义接收的是数组,而前端传过来的是空字符串,这就导致了反序列化失败。 处理方案: 手动判断前端传过来的内容,根据内容进行判断再转换一下(项目使用的是com.fasterxml.jackson) ``` @Data public class CustPublicityListInfo { @JsonDeserialize(using = RowJsonDeserializer.class) private List rows; public static class RowJsonDeserializer extends ...

0
0
2015/01/15 23:35

django rest framework - 数据解析

所有数据解析的类都是BaseParser的子类。 class BaseParser(object):     """     All parsers should extend `BaseParser`, specifying a `media_type`     attribute, and overriding the `.parse()` method.     """     media_type = None     def parse(self, stream, media_type=None, parser_context=None):         """         Given a stream to r...

0
0
发表了博客
2019/10/27 14:06

java 获取json字符串中key对应的值

用到了Gson的JsonParser maven项目引入 <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.3</version> </dependency> 也可以直接去这个网址下载jar包 https://mvnrepository.com/artifact/com.google.code.gson/gson 我们来解析下面这个json字符串 Java代码 import com.google.gson.JsonObject; import com.google.gson.JsonParser; public class Test { public static void...

0
0
发表了博客
2016/03/09 10:46

Gson解析json

#### Gson * __Gson 的 节点对象:__ `JsonElement` : 所有的节点 都是 JsonElement 对象. `JsonPrimitive` : 基本的 数据类型的 节点 对象, JsonElement 的子类. `JsonNull` : 代表 空节点 对象,即 有 key,value 为空,JsonElement 的子类. `JsonObject` : 对象 数据类型的 节点 对象, JsonElement 的 子类. `JsonArray` : 数组 数据类型的 节点 对象, JsonElement 的 子类. * __JsonElement的取值__: 1. 'JsonPrimitive' : ...

0
5
发表了博客
2018/08/14 10:19

各个JSON技术的比较(Jackson,Gson,Fastjson)的对比

转 https://blog.csdn.net/xiaoke815/article/details/52920405 JSON技术的调研报告 一 、各个JSON技术的简介和优劣 1.json-lib json-lib最开始的也是应用最广泛的json解析工具,json-lib 不好的地方确实是依赖于很多第三方包, 包括commons-beanutils.jar,commons-collections-3.2.jar,commons-lang-2.6.jar,commons-logging-1.1.1.jar,ezmorph-1.0.6.jar, 对于复杂类型的转换,json-lib对于json转换成bean还有缺陷,比如...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
0 评论
2 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部