cJSON解析数据如何避免过多if-else,实现解耦
2021-08-03 13:41
483 查看
代码展示:
数据接收函数内,解析cJSON数据时,一不小心就会冒出来一大堆if语句在一个函数内,后续想要新增网络功能时,必然又会导致需要在mqtt订阅函数内去新增部分代码,实现解析新的报文。
这显然耦合性很强。
解耦实现要求至少以新增函数的方式来增加业务功能,而非直接在原来的函数内部去进行新增或修改。
那么如何避免在解析cJSON时一个函数内出现过多的if语句呢?
先来思考,出现很多if语句,说明我们的cJSON格式的报文有很多的同级对象,不同的对象对应不同的业务,
所以我们应该以业务来进行划分,尽量将不同的数据解析划分到对应的业务代码模块中去。
而不是全部都放在一块,那样自然显得拥挤和不完美。
上图的方式是事先注册好根对象内的第一级别的下级对象,然后解析时遍历取出这些对象名,在收到的cJSON数据中去进行匹配,如果匹配上了,则进行后续的该对象的值处理。
如果没匹配上(cJSON_GetObjectItem函数返回NUILL),则继续尝试匹配下一个对象名看是否需要进行值处理。
注册-取出的思维在编程中很常用,这也是设计模式中观察者模式的一个运用。
.
相关文章推荐
- 代码中如何避免过多的if else
- 代码中如何避免过多的if else
- 如何在JSP页面中使用JSTL标签实现if-else判断
- 自制编程语言CXScript(三) 如何实现if语句、else语句并实现分支跳转
- SpringMVC框架下JQuery传递并解析Json格式的数据是如何实现的
- Esp8266 进阶之路28 【高级篇】教你轻松自如使用cJson在乐鑫 esp8266 如何解析一段json数据以及如何生成一段json数据。(附带demo)
- 如何实现JSTL if else if else 的jsp标签
- 如何解决代码中if…else 过多的问题
- 如何在JSP页面中使用JSTL标签实现if和if-else判断
- (超实用)mysql三目运算实现if,else的效果,避免不必要的查询
- Python中如何避免使用多个分支语句(多个if和else)——函数字典(Function Map)简介
- 如何解决代码中if…else 过多的问题
- 【技术篇】往事不堪回首,如何避免代码中大量if-else
- [Unity3D]手机3D游戏开发:如何实现最高分的存储与显示(七)----使用Game ID避免数据重复输入
- 活用设计模式:如何避免一连串的if else
- jsp中如何用jstl实现if(){}else if(){}else{}
- MySQL 如何利用一条语句实现类似于if-else条件语句的判断
- R中如何用ifelse进行数据分组
- 如何解决代码中 if…else 过多的问题
- 如何在JSP页面中使用JSTL标签实现if和if-else判断,判断条件使用<%=value%>