当前位置: 首页 > news >正文

重庆景点洪崖洞重庆seo网站运营

重庆景点洪崖洞,重庆seo网站运营,环保网站模板 html,做直通车任务的网站如何高效使用和处理JSON格式的数据 问题引入关于CJSON示例代码头文件引用处理数据 问题引入 最近的项目在用c处理后台的数据时,因为好多外部接口都在使用Json格式作为返回的数据结构和数据描述,如何在c中高效使用和处理Json格式的数据就成为了必须要解决…

如何高效使用和处理JSON格式的数据

  • 问题引入
  • 关于CJSON
  • 示例代码
    • 头文件引用
    • 处理数据

问题引入

最近的项目在用c处理后台的数据时,因为好多外部接口都在使用Json格式作为返回的数据结构和数据描述,如何在c中高效使用和处理Json格式的数据就成为了必须要解决的问题。

关于CJSON

经常使用Java开发的同学可能觉得这个不是个问题,fastjson对于Json格式的数据处理提供了很好的支持。顺着这个思路往下走后,在Json的官网上发现推荐了好几个c的功能库。根据个人使用的情况,综合易于上手和对Json数据操作的便捷性来说,推荐cJSON: cJSON on Github

示例代码

头文件引用

cJson可以直接在使用的地方引用,如下面这样。

#include "../include/cJSON.h"
#include "../include/cJSON_Utils.h"

也可能编译成so文件,作为库来使用。

处理数据

cJSON *json = NULL;
cJSON *jdata = NULL;
cJSON *jlists = NULL;
cJSON *jlist = NULL;json = cJSON_Parse(resp->response); // 从项目接口中返回的Json格式的数据
if (json == NULL)
{// 解析失败的情况下进行错误处理。const char *error_ptr = cJSON_GetErrorPtr();if (error_ptr != NULL){fprintf(stderr, "Error before: %s\n", error_ptr);}return OSMP_ERR;
}
// 获取对应的节点下的数据。我的项目中数据列表在{ data: { list: { xxx } } } 下。
// 可以seek到对应的节点下,获取到节点数据进行处理。
jdata = cJSON_GetObjectItemCaseSensitive(json, "data");
jlists = cJSON_GetObjectItemCaseSensitive(jdata, "list");// 循环处理列表中的每一条数据。
// cJson通过一个macro来组织循环处理列表中的处理。为了便于Java开发同学理解,相当于Java中的
// for(String item : arrayList ) {
//     System.out.println(item);
// } 
cJSON_ArrayForEach(jlist, jlists)
{cJSON *id = cJSON_GetObjectItemCaseSensitive(jlist, "id");cJSON *projectnum = cJSON_GetObjectItemCaseSensitive(jlist, "projectnum");cJSON *name = cJSON_GetObjectItemCaseSensitive(jlist, "name");cJSON *status = cJSON_GetObjectItemCaseSensitive(jlist, "status");cJSON *contractamount = cJSON_GetObjectItemCaseSensitive(jlist, "contractamount");cJSON *income = cJSON_GetObjectItemCaseSensitive(jlist, "income");cJSON *actualpayment = cJSON_GetObjectItemCaseSensitive(jlist, "actualpayment");cJSON *managerName = cJSON_GetObjectItemCaseSensitive(jlist, "managerName");cJSON *nextmilestone = cJSON_GetObjectItemCaseSensitive(jlist, "nextmilestone");cJSON *plancomplettime = cJSON_GetObjectItemCaseSensitive(jlist, "plancomplettime");cJSON *countdown = cJSON_GetObjectItemCaseSensitive(jlist, "countdown");// 组装sql进行后处理。char* sql = (char*)malloc(sizeof(char*)*10240);sprintf(sql, "insert into utmp_projectpageqrydetailinformation(id, projectnum, name ,status, contractamount, income, actualpayment, manager_name, nextmilestone, plancomplettime, countdown) values(%d, '%s', '%s', '%s', %d,  %d,  %d, '%s', '%s', '%s', '%s');", id->valueint, projectnum->valuestring, name->valuestring, status->valuestring, contractamount->valueint, income->valueint, actualpayment->valueint, managerName->valuestring, nextmilestone->valuestring, plancomplettime->valuestring, countdown->valuestring);
}
// 后续可以做一些资源清理操作,防止memory leak导致应用coredump.

如果有什么使用上的问题,欢迎留言一起讨论。:)

http://www.yayakq.cn/news/147457/

相关文章:

  • 用c 做网站在Linux上怎么做产品的网站
  • 佛山外贸建站公司groupon wordpress theme
  • 新网站如何做网站优化郑州客串seo
  • 做化学题的网站网页制作相关的工具软件
  • 门户网站衰落的原因vs2010 iis 网站开发
  • 网站可以个人备案吗吉林省建设厅网站周军
  • lamp网站开发制作池州建设网站
  • 无锡模板建站多少钱网络推广一般怎么收费
  • 网站友情链接查询手机网站和电脑网站的区别
  • 望京网站开发天河做网站设计
  • 电商网站怎样优化茶山网站仿做
  • 如何网上快速接网站开发订单游戏开发与网站开发哪个难
  • 德阳网站制作入侵网站后台管理系统
  • 福清营销型网站建设方案孝感注册公司
  • 阿里云做网站多少钱wordpress文档阅读器
  • 郑州投资网站建设保定 营销型网站建设
  • 盐都城乡建设部网站首页wordpress 创建一个热门文章分类
  • 校园网站建设目的可不可以用帝国cms做企业网站
  • 企业网站建设运营方案wordpress 大网站
  • 国家现代农业示范区建设网站西安建设企业网站
  • 做网站销售那里找客户nonce验证 wordpress
  • 网站建设 博采网络 学校android studio汉化
  • 政务网站建设和技术维护制度wordpress改logo不显示
  • wapcms建站系统中国最好的建站公司
  • 个人网站做企业备案灰色关键词网站建设
  • 网站制作教程 百度文库百度推广费用多少
  • 3.0效果网站建设多少钱下瓦房做网站公司
  • 网站建设1000字苏州网站建设选苏州梦易行
  • 金华住房和城乡建设部网站高新区网站建设 意义
  • 百度收录入口在哪里广州seo网站设计