Comments (4)
According to the cJSON documentation on github:
Use
cJSON_GetArrayItem
to get an element at a given index.
from cjson.
I don't understand how to do it right.
SetAP key value no.
if (root != NULL) {
cJSON * key = NULL;
cJSON_ArrayForEach(key, root) {
if (cJSON_IsString(key) && (key->valuestring != NULL)) {
if (!strcmp(key->string, "SetSTA")) {
cJSON * value_data = cJSON_GetObjectItem(root, "SetSTA");
if (!cJSON_IsArray(value_data)) {
cJSON_Delete(root);
return;
}
const cJSON * arrayItem = cJSON_GetArrayItem(value_data, 0);
send_uart_0("SYS", "WS <= Value:", arrayItem->valuestring);
} else send_uart_0("ER!", "WS Key", "Unknown");
}
}
}
from cjson.
Your call to cJSON_ArrayForEach
doesn't make sense in this context, as your root is a json object. You can just omit this call.
And as mbratch said: If you want to adress the entries by index, just use cJSON_GetArrayItem
on the extracted array. Somewhat like this:
if (root != NULL)
{
cJSON* value_data = cJSON_GetObjectItem(root, "SetSTA");
if (!cJSON_IsArray(value_data))
{
cJSON_Delete(root);
return;
}
const cJSON* ssid = cJSON_GetArrayItem(value_data, 0);
const cJSON* pass = cJSON_GetArrayItem(value_data, 1);
printf("Name: %s\r\n", cJSON_GetStringValue(ssid));
printf("Pass: %s\r\n", cJSON_GetStringValue(pass));
}
from cjson.
I figured it out, but I'm not sure how true this is
// { "SetSTA": ["SSID_Name", "Password"] } - rxData
cJSON * root = cJSON_Parse(rxData);
if (root != NULL) {
send_uart_0("SYS", "WS <= SRC", rxData);
/* Перебираем ключи: key->string - ключ, key->valuestring - значение */
cJSON * key = NULL;
cJSON_ArrayForEach(key, root) {
/* Настройки в режиме STA */
if (!strcmp(key->string, "SetSTA")) {
cJSON * SetSTA_Data = cJSON_GetObjectItem(root, "SetSTA");
if (SetSTA_Data == NULL) {
cJSON_Delete(root);
free(rxData);
return;
}
strncpy(config.StaSSID, cJSON_GetStringValue(cJSON_GetArrayItem(SetSTA_Data, 0)), sizeof(config.StaSSID));
strncpy(config.StaPSK, cJSON_GetStringValue(cJSON_GetArrayItem(SetSTA_Data, 1)), sizeof(config.StaPSK));
flag_file_system = FS_SAVE_CONFIG_FILE;
} else send_uart_0("ER!", "WS Key", "Unknown");
}
if (str != NULL) free(str);
} else send_uart_0("ER!", "WS <=", "Package No JSON");
from cjson.
Related Issues (20)
- question on vxworks 6.8 HOT 3
- cJSON_DeleteItemFromArray considers dicts and arrays equally HOT 1
- Cannot Parse JSON HOT 5
- Add a function cJSON_IsEmpty() HOT 4
- JSON Parse Error HOT 11
- Always provide valuestring
- Double Free Vulnerability Discovered in cJSON_Delete Function Through Fuzzing HOT 6
- Fix cmake export to allow cross-compilation with sysroot HOT 1
- Regression on double precision in print_number() when fix a clang compile warning
- A segmentation fault in cJSON_SetValuestring HOT 2
- Can't Install it on PI HOT 2
- cJSON_CreateStringArray and NULL items HOT 4
- Weird Commits HOT 3
- Question: JSON Minifier
- print_number() non guaranteed to be thread safe with floating point numbers
- sorry,delete it
- misc_tests fails on 1.7.18 under Windows HOT 3
- Memory Leak in the cJSON_Free HOT 2
- Bug in print_string_ptr() increment is 4 instead of 5 HOT 2
- Unable to Specify macOS min version
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from cjson.