json库范例3

这是一个关于JSON库使用的示例,展示了如何从文件中读取并解析JSON对象,其中包括一个名为'glossary'的数据结构,包含有关标准通用标记语言(SGML)的信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*
{"glossary":{"tit":"exampleglossary","GlossDiv":{"TYitle":"S","GlossList":[{"ID":"SGML","SortAs":"SGML","GlossTerm":"Standa
rdGeneralizedMarkupLanguage","Acronym":"SGML","Abbrev":"ISO8879:1986","GlossDef":"Ameta-markuplanguage,usedtocreatemarkuplan
guagessuchasDocBook.","GlossSeeAlso":["GML","XML","markup"]}]}},"shi":"shaojie"}
*/

#include <stdio.h>

#include <string.h>
#include <json/json.h>
#include <json/json_object_private.h>
#define JSON_PATH_FILE "/home/wzb/testls/json/json.txt"

void main()
{


json_object *jsonobj=NULL,*jsondata=NULL,*tmpobj=NULL,*jsonarray=NULL;
char str[1024]={0}; 
int len=0,i; 

jsonobj= json_object_from_file(JSON_PATH_FILE);/*从文件中获取一个json 对象*/

json_object_object_foreach(jsonobj,key,val)
{
if(strcmp(key,"glossary")==0)
{
printf("glossary=%s\n",json_object_get_string(val));
#if 1
jsondata=json_object_new_object();
jsondata=json_object_get(val);

if(is_error(jsondata))
{
json_object_put(jsondata);
return;
}
printf("jsondata=%s\n",json_object_get_string(jsondata));
json_object_object_foreach(jsondata,key,val)
{
if(strcmp(key,"GlossDiv")==0)
{
printf("GlossDiv=%s\n",json_object_get_string(val));
tmpobj=val;
json_object_object_foreach(tmpobj,key,val)
{
if(strcmp(key,"TYitle")==0)
{
     printf("TYitle=%s\n",json_object_get_string(val));
}
if(strcmp(key,"GlossList")==0)
{
      printf("GlossList=%s\n",json_object_get_string(val));
   jsonarray=json_object_new_array();
     jsonarray=val;
    len=json_object_array_length(jsonarray);
    for(i=0;i<len;i++)
{
  tmpobj= json_object_array_get_idx(jsonarray,i);
    json_object_object_foreach(tmpobj,key,val)
  {
if(strcmp(key,"ID")==0)
{
printf("ID=%s\n",json_object_get_string(val));
}
if(strcmp(key,"SortAs")==0)
{
printf("SortAs=%s\n",json_object_get_string(val));
}
if(strcmp(key,"GlossTerm")==0)
{
printf("GlossTerm=%s\n",json_object_get_string(val));
}
if(strcmp(key,"Acronym")==0)
{
printf("Acronym=%s\n",json_object_get_string(val));
}
if(strcmp(key,"Acronym")==0)
{
printf("Acronym=%s\n",json_object_get_string(val));
}
/*
if(strcmp(key,"GlossTerm")==0)
{
printf("GlossTerm=%s\n",json_object_get_string(val));
}*/

if(strcmp(key,"GlossDef")==0)
{
printf("GlossDef=%s\n",json_object_get_string(val));
}
if(strcmp(key,"GlossSeeAlso")==0)
{
printf("GlossSeeAlso=%s\n",json_object_get_string(val));
}

   }
}
}
}
}
if(strcmp(key,"tit")==0)
{
printf("tit=%s\n",json_object_get_string(val));
}

}
json_object_put(jsondata);
#endif

if(strcmp(key,"shi")==0)
{
printf("shi=%s\n",json_object_get_string(val));
}
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值