1#include <stdio.h> 2#include <stdlib.h> 3#include <stddef.h> 4#include <string.h> 5#include <assert.h> 6 7#include "json.h" 8#include "parse_flags.h" 9 10static int sort_fn (const void *j1, const void *j2) 11{ 12 json_object * const *jso1, * const *jso2; 13 int i1, i2; 14 15 jso1 = (json_object* const*)j1; 16 jso2 = (json_object* const*)j2; 17 if (!*jso1 && !*jso2) 18 return 0; 19 if (!*jso1) 20 return -1; 21 if (!*jso2) 22 return 1; 23 24 i1 = json_object_get_int(*jso1); 25 i2 = json_object_get_int(*jso2); 26 27 return i1 - i2; 28} 29 30#ifdef TEST_FORMATTED 31#define json_object_to_json_string(obj) json_object_to_json_string_ext(obj,sflags) 32#else 33/* no special define */ 34#endif 35 36int main(int argc, char **argv) 37{ 38 json_object *my_string, *my_int, *my_object, *my_array; 39 int i; 40#ifdef TEST_FORMATTED 41 int sflags = 0; 42#endif 43 44 MC_SET_DEBUG(1); 45 46#ifdef TEST_FORMATTED 47 sflags = parse_flags(argc, argv); 48#endif 49 50 my_string = json_object_new_string("\t"); 51 printf("my_string=%s\n", json_object_get_string(my_string)); 52 printf("my_string.to_string()=%s\n", json_object_to_json_string(my_string)); 53 json_object_put(my_string); 54 55 my_string = json_object_new_string("\\"); 56 printf("my_string=%s\n", json_object_get_string(my_string)); 57 printf("my_string.to_string()=%s\n", json_object_to_json_string(my_string)); 58 json_object_put(my_string); 59 60 my_string = json_object_new_string("foo"); 61 printf("my_string=%s\n", json_object_get_string(my_string)); 62 printf("my_string.to_string()=%s\n", json_object_to_json_string(my_string)); 63 64 my_int = json_object_new_int(9); 65 printf("my_int=%d\n", json_object_get_int(my_int)); 66 printf("my_int.to_string()=%s\n", json_object_to_json_string(my_int)); 67 68 my_array = json_object_new_array(); 69 json_object_array_add(my_array, json_object_new_int(1)); 70 json_object_array_add(my_array, json_object_new_int(2)); 71 json_object_array_add(my_array, json_object_new_int(3)); 72 json_object_array_put_idx(my_array, 4, json_object_new_int(5)); 73 printf("my_array=\n"); 74 for(i=0; i < json_object_array_length(my_array); i++) 75 { 76 json_object *obj = json_object_array_get_idx(my_array, i); 77 printf("\t[%d]=%s\n", i, json_object_to_json_string(obj)); 78 } 79 printf("my_array.to_string()=%s\n", json_object_to_json_string(my_array)); 80 81 json_object_put(my_array); 82 83 my_array = json_object_new_array(); 84 json_object_array_add(my_array, json_object_new_int(3)); 85 json_object_array_add(my_array, json_object_new_int(1)); 86 json_object_array_add(my_array, json_object_new_int(2)); 87 json_object_array_put_idx(my_array, 4, json_object_new_int(0)); 88 printf("my_array=\n"); 89 for(i=0; i < json_object_array_length(my_array); i++) 90 { 91 json_object *obj = json_object_array_get_idx(my_array, i); 92 printf("\t[%d]=%s\n", i, json_object_to_json_string(obj)); 93 } 94 printf("my_array.to_string()=%s\n", json_object_to_json_string(my_array)); 95 json_object_array_sort(my_array, sort_fn); 96 printf("my_array=\n"); 97 for(i=0; i < json_object_array_length(my_array); i++) 98 { 99 json_object *obj = json_object_array_get_idx(my_array, i); 100 printf("\t[%d]=%s\n", i, json_object_to_json_string(obj)); 101 } 102 printf("my_array.to_string()=%s\n", json_object_to_json_string(my_array)); 103 104 my_object = json_object_new_object(); 105 json_object_object_add(my_object, "abc", json_object_new_int(12)); 106 json_object_object_add(my_object, "foo", json_object_new_string("bar")); 107 json_object_object_add(my_object, "bool0", json_object_new_boolean(0)); 108 json_object_object_add(my_object, "bool1", json_object_new_boolean(1)); 109 json_object_object_add(my_object, "baz", json_object_new_string("bang")); 110 111 json_object *baz_obj = json_object_new_string("fark"); 112 json_object_get(baz_obj); 113 json_object_object_add(my_object, "baz", baz_obj); 114 json_object_object_del(my_object, "baz"); 115 116 /* baz_obj should still be valid */ 117 printf("baz_obj.to_string()=%s\n", json_object_to_json_string(baz_obj)); 118 json_object_put(baz_obj); 119 120 /*json_object_object_add(my_object, "arr", my_array);*/ 121 printf("my_object=\n"); 122 json_object_object_foreach(my_object, key, val) 123 { 124 printf("\t%s: %s\n", key, json_object_to_json_string(val)); 125 } 126 printf("my_object.to_string()=%s\n", json_object_to_json_string(my_object)); 127 128 json_object_put(my_string); 129 json_object_put(my_int); 130 json_object_put(my_object); 131 json_object_put(my_array); 132 133 return 0; 134} 135