Jelajahi Sumber

Ajout tableau dans l'encodeur JSON

Arthur Brandao 6 tahun lalu
induk
melakukan
171df07fa8
3 mengubah file dengan 33 tambahan dan 6 penghapusan
  1. 3 3
      Serveur/json.h
  2. 17 2
      Serveur/json_encoder.c
  3. 13 1
      Serveur/test.c

+ 3 - 3
Serveur/json.h

@@ -225,15 +225,15 @@ void add_boolean(JsonEncoder*, char*, boolean);
  * Ajoute un tableau au JSON
  * @param JsonEncoder* La structure pour encoder
  * @param char* La clef pour acceder à la valeur
- * @param char* La valeur
+ * @param JsonArray* La valeur
  */
-void add_array(JsonEncoder*, char*, char*);
+void add_array(JsonEncoder*, char*, JsonArray*);
 
 /**
  * Ajoute un objet JSON au JSON
  * @param JsonEncoder* La structure pour encoder
  * @param char* La clef pour acceder à la valeur
- * @param JsonEncoder La valeur
+ * @param JsonEncoder* La valeur
  */
 void add_object(JsonEncoder*, char*, JsonEncoder*);
 

+ 17 - 2
Serveur/json_encoder.c

@@ -114,8 +114,23 @@ void add_boolean(JsonEncoder* this, char* key, boolean val){
     free(str);
 }
 
-void add_array(JsonEncoder* this, char* key, char* val){
-    add_string(this, key, val); //Pas de gestion special
+void add_array(JsonEncoder* this, char* key, JsonArray* val){
+    //Verification
+    if(val->mode != JSON_ARRAY_ENCODER){
+        return;
+    }
+    //Recup string du JsonEncoder
+    char* json;
+    json = json_encode_array(val);
+    //Creation chaine
+    int length = strlen(key) + strlen(json) + 2 + 2 + 1; //clef + val + 2 guillemets + ": " + \0
+    char* str = malloc(length * sizeof(char));
+    memset(str, 0, length);
+    sprintf(str, "\"%s\": %s", key, json);
+    //Ajout
+    add_value(this, str);
+    free(str);
+    free(json);
 }
 
 void add_object(JsonEncoder* this, char* key, JsonEncoder* val){

+ 13 - 1
Serveur/test.c

@@ -191,8 +191,20 @@ int array_encode(){
     add_array_string(&ja, "String");
     add_array_boolean(&ja, 1);
     add_array_array(&ja, &ja);
-    printf("%s\n", json_encode_array(&ja));
+    
+    JsonEncoder je;
+    ini_encoder(&je);
+    add_string(&je, "clef", "val");
+    add_boolean(&je, "bool", 0);
+    add_object(&je, "self", &je);
+    
+    add_array_object(&ja, &je);
+    add_array(&je, "tab", &ja);
+    
+    printf("%s\n", json_encode(&je));
+    
     clean_json_array(&ja);
+    clean_json_encoder(&je);
     return 1;
 }