#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "cJSON.h"
#include <string.h>
typedef struct {
uint8_t id;
uint8_t cup_id;
char* name;
uint16_t volume;
} ProductLibrary_t;
void app_main() {
ProductLibrary_t product_libraries[] = {
{
.id = 1,
.cup_id = 1,
.name = "Thai Tea Medium",
.volume = 200,
},
{
.id = 2,
.cup_id = 1,
.name = "Jasmine Tea Medium",
.volume = 250,
}
};
cJSON *root = cJSON_CreateObject();
cJSON *product_libraries_json;
product_libraries_json = cJSON_AddArrayToObject(root, "product_libraries");
for (uint8_t i = 0; i < sizeof(product_libraries) / sizeof(ProductLibrary_t); i++){
cJSON *item_json;
item_json = cJSON_CreateObject();
cJSON_AddNumberToObject(item_json, "id", product_libraries[i].id);
cJSON_AddNumberToObject(item_json, "cup_id", product_libraries[i].cup_id);
cJSON_AddStringToObject(item_json, "name", product_libraries[i].name);
cJSON_AddNumberToObject(item_json, "volume", product_libraries[i].volume);
cJSON_AddItemToArray(product_libraries_json, item_json);
}
if (root->child){
cJSON *p = root->child;
if(strcmp(p->string, "product_libraries") == 0){
ProductLibrary_t aaa[2];
uint8_t count = 0;
cJSON *current_element = NULL;
cJSON_ArrayForEach(current_element, p) {
cJSON *item = current_element->child;
ProductLibrary_t ii = {
.id = item->valueint,
.cup_id = item->next->valueint,
.name = item->next->next->valuestring,
.volume = item->next->next->next->valueint,
};
aaa[count] = ii;
count++;
}
for (int c = 0; c < 2; c++){
printf("ID: %d\nCUP ID: %d\nName: %s\nVolume: %d\n\n",
aaa[c].id, aaa[c].cup_id,
aaa[c].name, aaa[c].volume
);
}
}
if(strcmp(p->string, "id") == 0){
cJSON_SetNumberValue(p, 888);
} else if (strcmp(p->string, "cup_id") == 0) {
cJSON_SetNumberValue(p, 999);
}
}
char *my_json_string = cJSON_Print(root);
printf("Result: %s\n", my_json_string);
}
Loading
esp32-s3-devkitc-1
esp32-s3-devkitc-1