微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ajax json c 实例

最近学习了一些关于Web技术的知识,其中学习了一些关于Ajax,Json和C的知识,今天来分享一下一个简单的实例程序。

ajax json c 实例

该程序实现的是通过Ajax请求一个Json文件并将其解析并显示代码如下:

// C语言
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <curl/curl.h>
#include <jansson.h>

// 请求的Url
char *url = "http://example.com/data.json";

size_t write_callback(char *ptr,size_t size,size_t nmemb,void *userdata)
{
  // 将收到的数据保存到userdata中
  size_t realsize = size * nmemb;
  char **response_ptr = (char**) userdata;
  *response_ptr = realloc(*response_ptr,strlen(*response_ptr) + realsize + 1);
  memcpy(*response_ptr + strlen(*response_ptr),ptr,realsize);
  (*response_ptr)[strlen(*response_ptr) + realsize] = 0;
  return realsize;
}

int main(int argc,char *argv[])
{
  CURL *curl;
  CURLcode res;
  char *response = malloc(1);
  response[0] = '\0';
  
  curl = curl_easy_init();
  if(curl) {
    curl_easy_setopt(curl,CURLOPT_URL,url);
    curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,write_callback);
    curl_easy_setopt(curl,CURLOPT_WRITEDATA,&response);

    res = curl_easy_perform(curl);

    curl_easy_cleanup(curl);
  }
  
  // 解析Json数据
  json_t *root;
  json_error_t error;
  root = json_loads(response,&error);

  // 输出Json数据
  printf("Data:\n");
  json_dumpf(root,stdout,JSON_INDENT(2));
  
  // 释放内存
  json_decref(root);
  free(response);

  return 0;
}

该程序使用了curl库来从Url中获取Json数据,使用了jansson库来解析Json数据。使用了write_callback函数来接收Curl库的回调,把请求到的数据保存到访问的char指针内,最后通过json_t来解析Json数据,输出到控制台。

这里我们可以看到Json和C语言之间的交互是如此简单,通过C语言的函数库和Json解析库的调用,我们不仅能够很轻松地获取到Json数据,还能利用C语言的强大能力对解析到的数据进行处理。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐