复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65/ # cat /proc/meminfo MemTotal: 61632 kB MemFree: 38796 kB Buffers: 0 kB Cached: 17104 kB SwapCached: 0 kB Active: 2152 kB Inactive: 15476 kB Active(anon): 524 kB Inactive(anon): 0 kB Active(file): 1628 kB Inactive(file): 15476 kB Unevictable: 0 kB Mlocked: 0 kB SwapTotal: 0 kB SwapFree: 0 kB Dirty: 0 kB Writeback: 0 kB AnonPages: 548 kB Mapped: 1184 kB Slab: 4156 kB SReclaimable: 820 kB SUnreclaim: 3336 kB PageTables: 100 kB NFS_Unstable: 0 kB Bounce: 0 kB WritebackTmp: 0 kB CommitLimit: 30816 kB Committed_AS: 2476 kB VmallocTotal: 956416 kB VmallocUsed: 263600 kB VmallocChunk: 686076 kB / #
复制代码
1
2
3
4
5
6
7
8
9
10struct json_object* json_object_new_int(int32_t i) { struct json_object *jso = json_object_new(json_type_int); if (!jso) return NULL; jso->_to_json_string = &json_object_int_to_json_string; jso->o.c_int64 = i; return jso; }
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16static struct json_object* json_object_new(enum json_type o_type) { struct json_object *jso; jso = (struct json_object*)calloc(sizeof(struct json_object), 1); if (!jso) return NULL; jso->o_type = o_type; jso->_ref_count = 1; jso->_delete = &json_object_generic_delete; #ifdef REFCOUNT_DEBUG lh_table_insert(json_object_table, jso, jso); MC_DEBUG("json_object_new_%s: %pn", json_type_to_name(jso->o_type), jso); #endif /* REFCOUNT_DEBUG */ return jso; }
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39int json_object_object_add(struct json_object* jso, const char *key, struct json_object *val) { return json_object_object_add_ex(jso, key, val, 0); } int json_object_object_add_ex(struct json_object* jso, const char *const key, struct json_object *const val, const unsigned opts) { struct json_object *existing_value = NULL; struct lh_entry *existing_entry; unsigned long hash; assert(json_object_get_type(jso) == json_type_object); // We lookup the entry and replace the value, rather than just deleting // and re-adding it, so the existing key remains valid. hash = lh_get_hash(jso->o.c_object, (const void *)key); existing_entry = (opts & JSON_C_OBJECT_ADD_KEY_IS_NEW) ? NULL : lh_table_lookup_entry_w_hash(jso->o.c_object, (const void *)key, hash); // The caller must avoid creating loops in the object tree, but do a // quick check anyway to make sure we're not creating a trivial loop. if (jso == val) return -1; if (!existing_entry) { const void *const k = (opts & JSON_C_OBJECT_KEY_IS_CONSTANT) ? (const void *)key : strdup(key); if (k == NULL) return -1; return lh_table_insert_w_hash(jso->o.c_object, k, val, hash, opts); } existing_value = (json_object *) lh_entry_v(existing_entry); if (existing_value) json_object_put(existing_value); existing_entry->v = val; return 0; }
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53const char* json_object_get_string(struct json_object *jso) { if (!jso) return NULL; switch(jso->o_type) { case json_type_string: return get_string_component(jso); default: return json_object_to_json_string(jso); } } /* helper for accessing the optimized string data component in json_object */ static const char * get_string_component(const struct json_object *jso) { return (jso->o.c_string.len < LEN_DIRECT_STRING_DATA) ? jso->o.c_string.str.data : jso->o.c_string.str.ptr; } /* backwards-compatible conversion to string */ const char* json_object_to_json_string(struct json_object *jso) { return json_object_to_json_string_ext(jso, JSON_C_TO_STRING_SPACED); } const char* json_object_to_json_string_ext(struct json_object *jso, int flags) { return json_object_to_json_string_length(jso, flags, NULL); } /* extended conversion to string */ const char* json_object_to_json_string_length(struct json_object *jso, int flags, size_t *length) { const char *r = NULL; size_t s = 0; if (!jso) { s = 4; r = "null"; } else if ((jso->_pb) || (jso->_pb = printbuf_new())) { printbuf_reset(jso->_pb); if(jso->_to_json_string(jso, jso->_pb, 0, flags) >= 0) { s = (size_t)jso->_pb->bpos; r = jso->_pb->buf; } } if (length) *length = s; return r; }
最后
以上就是无限老虎最近收集整理的关于json-c库的使用的全部内容,更多相关json-c库内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复