main.c 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include "json.h"
  4. #include "arraylist.h"
  5. int parse(){
  6. char str[200];
  7. char* key = NULL;
  8. char* val = NULL;
  9. JsonParser json;
  10. strcpy(str, "{\"name\" : \"Jack\", \"age\": 27, \"test\": true, \"tab\": [1, 2, 3, 4, 5], \"obj\": {\"name\" : \"Jack\", \"age\": 27}, \"nb\": 27.8 }");
  11. //Parse
  12. int a = json_parse(&json, str);
  13. printf("Parse : %d\n", a);
  14. //Affiche toutes les clefs : valeurs
  15. for(int i = 0; i < json.elt; i++){
  16. key = key_index(&json, i);
  17. val = get_index(&json, i);
  18. printf("%s : %s\n", key, val);
  19. }
  20. //Recup un nombre
  21. printf("Double : %f %.2f | Int : %d %d\n", get_number(&json, "age"), get_number(&json, "nb"), get_integer(&json, "age"), get_integer(&json, "nb"));
  22. //Recup boolean
  23. printf("Bool : %d %d\n", get_boolean(&json, "test"), get_boolean(&json, "tab"));
  24. //Recup obj
  25. JsonParser* js;
  26. js = get_object(&json, "obj");
  27. if(js != NULL){
  28. int key_i = get_pos(js, "name");
  29. printf("JSON : %s %s, age %d\n", key_index(js, key_i), get_value(js, "name"), get_integer(js, "age"));
  30. } else {
  31. printf("JSON : Error");
  32. }
  33. //Supprime
  34. free(key);
  35. free(val);
  36. clean_json_parser(&json);
  37. return 0;
  38. }
  39. int encode(){
  40. //Encode
  41. JsonEncoder json;
  42. ini_encoder(&json);
  43. add_string(&json, "name", "robert");
  44. add_number(&json, "nb", 25.698, 2);
  45. add_integer(&json, "int", 846);
  46. add_string(&json, "aze", "rty");
  47. add_boolean(&json, "bool", false);
  48. add_value(&json, "\"test\": \"aze\nrty\"");
  49. printf("Json\n");
  50. printf("%s\n", json_encode(&json));
  51. //Encode un JsonEncoder
  52. JsonEncoder json2;
  53. ini_encoder(&json2);
  54. add_integer(&json2, "vie", 42);
  55. add_object(&json2, "obj", json);
  56. printf("\nJson 2\n");
  57. printf("%s\n", json_encode(&json2));
  58. //Decode
  59. JsonParser parser, *parser2;
  60. char* key, *val;
  61. json_parse(&parser, json_encode(&json2));
  62. //Affiche toutes les clefs : valeurs
  63. printf("\nParser\n");
  64. for(int i = 0; i < parser.elt; i++){
  65. key = key_index(&parser, i);
  66. val = get_index(&parser, i);
  67. printf("%s : %s\n", key, val);
  68. }
  69. //Lecture du sous json
  70. parser2 = get_object(&parser, "obj");
  71. //Affiche toutes les clefs : valeurs
  72. printf("\nParser 2\n");
  73. for(int i = 0; i < parser2->elt; i++){
  74. key = key_index(parser2, i);
  75. val = get_index(parser2, i);
  76. printf("%s : %s\n", key, val);
  77. }
  78. //Clean
  79. clean_json_encoder(&json);
  80. clean_json_encoder(&json2);
  81. clean_json_parser(&parser);
  82. return 0;
  83. }
  84. int array_list(){
  85. arraylist al;
  86. arraylist_ini(&al);
  87. arraylist_add(&al, "clef1", "val1");
  88. arraylist_add(&al, "clef2", "val2");
  89. arraylist_add(&al, "clef3", "val3");
  90. arraylist_add(&al, "clef3", "val4");
  91. for(al_node* aln = al.first; aln != NULL; aln = aln->next){
  92. printf("%s: %s\n", aln->key, aln->val);
  93. }
  94. al_node* aln = arraylist_search(&al, "clef2");
  95. printf("Search clef2 : %d\n", aln != NULL);
  96. aln = arraylist_search(&al, "clef22");
  97. printf("Search clef22 : %d\n-----\n", aln != NULL);
  98. arraylist_remove(&al, "clef1");
  99. arraylist_add(&al, "clef4", "val4");
  100. for(al_node* aln = al.first; aln != NULL; aln = aln->next){
  101. printf("%s: %s\n", aln->key, aln->val);
  102. }
  103. printf("Size : %d\n-----\n", al.size);
  104. arraylist_remove(&al, "clef3");
  105. for(al_node* aln = al.first; aln != NULL; aln = aln->next){
  106. printf("%s: %s\n", aln->key, aln->val);
  107. }
  108. printf("Size : %d\n-----\n", al.size);
  109. arraylist_clean(&al);
  110. printf("Size : %d\n", al.size);
  111. return 0;
  112. }
  113. int main(){
  114. //return parse();
  115. //return encode();
  116. return array_list();
  117. }