c json保存整型数组_JSON-C库的使用(1)Json对象数组的解析

1 #include

2 #include

3 #include

4 #include

5 #include "json.h"

6

7 voidencodeJson();8 voiddecodeJson();9

10 int main(int argc, char **argv)11 {12 int ret = 0;13

14 encodeJson();15

16 decodeJson();17

18 returnret;19 }20

21 static char *json_type_to_name(intjson_type)22 {23 char json_type_name[128];24

25 memset(json_type_name, 0x00, sizeof(json_type_name));26 switch(json_type)27 {28 casejson_type_null:29 snprintf(json_type_name, sizeof(json_type_name), "%s", "json_type_null");30 break;31

32 casejson_type_boolean:33 snprintf(json_type_name, sizeof(json_type_name), "%s", "json_type_boolean");34 break;35

36 casejson_type_double:37 snprintf(json_type_name, sizeof(json_type_name), "%s", "json_type_double");38 break;39

40 casejson_type_int:41 snprintf(json_type_name, sizeof(json_type_name), "%s", "json_type_int");42 break;43

44 casejson_type_object:45 snprintf(json_type_name, sizeof(json_type_name), "%s", "json_type_object");46 break;47

48 casejson_type_array:49 snprintf(json_type_name, sizeof(json_type_name), "%s", "json_type_array");50 break;51

52 casejson_type_string:53 snprintf(json_type_name, sizeof(json_type_name), "%s", "json_type_string");54 break;55 }56

57 returnjson_type_name;58 }59

60 static void getFieldValue(struct json_object *child_obj, const char *field)61 {62 struct json_object *obj =json_object_object_get(child_obj, field);63

64 enum json_type obj_type =json_object_get_type(obj);65 //printf("%s json_type is %s\n", field, json_type_to_name(obj_type));

66

67 if (obj_type ==json_type_int)68 {69 printf("%s=%d\n", field, json_object_get_int(obj));70 }71 else if (obj_type ==json_type_string)72 {73 printf("%s=%s\n", field, json_object_get_string(obj));74 }75 }76

77 voiddecodeJson()78 {79 const char *json_string = "{ \n\

80 \"userinfo\": [ \n\

81 { \"pin\": \"10000\", \"cardno\": \"123456789\", \"password\": \"123456\", \"name\": \"paul\", \"Privilege\": 14, \"flag\": 1 }, \n\

82 { \"pin\": \"10001\", \"cardno\": \"123456789\", \"password\": \"123456\", \"name\": \"paul\", \"Privilege\": 14, \"flag\": 1 }, \n\

83 { \"pin\": \"10002\", \"cardno\": \"123456789\", \"password\": \"123456\", \"name\": \"paul\", \"Privilege\": 14, \"flag\": 1 }, \n\

84 { \"pin\": \"10003\", \"cardno\": \"123456789\", \"password\": \"123456\", \"name\": \"paul\", \"Privilege\": 14, \"flag\": 1 }, \n\

85 { \"pin\": \"10004\", \"cardno\": \"123456789\", \"password\": \"123456\", \"name\": \"paul\", \"Privilege\": 14, \"flag\": 1 }, \n\

86 { \"pin\": \"10005\", \"cardno\": \"123456789\", \"password\": \"123456\", \"name\": \"paul\", \"Privilege\": 14, \"flag\": 1 }, \n\

87 { \"pin\": \"10006\", \"cardno\": \"123456789\", \"password\": \"123456\", \"name\": \"paul\", \"Privilege\": 14, \"flag\": 1 }, \n\

88 { \"pin\": \"10007\", \"cardno\": \"123456789\", \"password\": \"123456\", \"name\": \"paul\", \"Privilege\": 14, \"flag\": 1 }, \n\

89 { \"pin\": \"10008\", \"cardno\": \"123456789\", \"password\": \"123456\", \"name\": \"paul\", \"Privilege\": 14, \"flag\": 1 }, \n\

90 { \"pin\": \"10009\", \"cardno\": \"123456789\", \"password\": \"123456\", \"name\": \"paul\", \"Privilege\": 14, \"flag\": 1 } \n\

91 ] }";

92

93 int ret = 0;94 int i = 0;95 struct json_object *root_obj =NULL;96 struct json_object *arry_obj =NULL;97 struct json_object *child_obj =NULL;98 struct lh_entry *entry =NULL;99 char *key =NULL;100

101 root_obj =json_tokener_parse(json_string);102 entry = json_object_get_object(root_obj)->head;103 if(entry)104 {105 key = (char *)entry->k;106 arry_obj = (struct json_object *)entry->v;107

108 if (json_type_array !=json_object_get_type(arry_obj)109 && json_type_object !=json_object_get_type(arry_obj))110 {111 return -1;112 }113

114 printf("key = %s\n", key);115 printf("array_obj = %s\n", json_object_to_json_string(arry_obj));116

117 if (json_type_array ==json_object_get_type(arry_obj))118 {119 for(i = 0; i < json_object_array_length(arry_obj); i++)120 {121 child_obj =json_object_array_get_idx(arry_obj, i);122 //printf("child_obj = %s\n", json_object_to_json_string(child_obj));

123

124 getFieldValue(child_obj, "pin");125 getFieldValue(child_obj, "cardno");126 getFieldValue(child_obj, "password");127 getFieldValue(child_obj, "name");128 getFieldValue(child_obj, "Privilege");129 getFieldValue(child_obj, "flag");130 printf("\n");131 }132 }133 else if (json_type_object ==json_object_get_type(arry_obj))134 {135

136 }137 }138

139 }140

141 voidencodeJson()142 {143 int i = 0;144 struct json_object *root_obj =NULL;145 struct json_object *child_obj =NULL;146 struct json_object *array_obj =NULL;147 char *tmpStr =NULL;148

149 root_obj =json_object_new_object();150 array_obj =json_object_new_array();151

152 for(i = 0; i < 10; i++)153 {154 child_obj =json_object_new_object();155

156 json_object_object_add(child_obj, "pin", json_object_new_string("10000"));157 json_object_object_add(child_obj, "cardno", json_object_new_string("123456789"));158 json_object_object_add(child_obj, "password", json_object_new_string("123456"));159 json_object_object_add(child_obj, "name", json_object_new_string("paul"));160 json_object_object_add(child_obj, "Privilege", json_object_new_int(14));161 json_object_object_add(child_obj, "flag", json_object_new_int(1));162

163 json_object_array_add(array_obj, child_obj);164 child_obj =NULL;165 }166

167 json_object_object_add(root_obj, "userinfo", array_obj);168

169 tmpStr =json_object_to_json_string(root_obj);170 printf("%s\n", tmpStr);171 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值