JsonConfig: refactor JSON key handling to improve safety and consistency

Also make keys case-sensitive
This commit is contained in:
李通洲
2025-08-02 18:51:03 +08:00
parent 3cef51ec4a
commit 0b02543ef2
79 changed files with 333 additions and 603 deletions
+8 -12
View File
@@ -259,18 +259,14 @@ bool ffParseDisplayCommandOptions(FFDisplayOptions* options, const char* key, co
void ffParseDisplayJsonObject(FFDisplayOptions* options, yyjson_val* module)
{
yyjson_val *key_, *val;
yyjson_val *key, *val;
size_t idx, max;
yyjson_obj_foreach(module, idx, max, key_, val)
yyjson_obj_foreach(module, idx, max, key, val)
{
const char* key = yyjson_get_str(key_);
if(ffStrEqualsIgnCase(key, "type") || ffStrEqualsIgnCase(key, "condition"))
continue;
if (ffJsonConfigParseModuleArgs(key, val, &options->moduleArgs))
continue;
if (ffStrEqualsIgnCase(key, "compactType"))
if (unsafe_yyjson_equals_str(key, "compactType"))
{
int value;
const char* error = ffJsonConfigParseEnum(val, &value, (FFKeyValuePair[]) {
@@ -282,19 +278,19 @@ void ffParseDisplayJsonObject(FFDisplayOptions* options, yyjson_val* module)
{},
});
if (error)
ffPrintError(FF_DISPLAY_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Invalid %s value: %s", key, error);
ffPrintError(FF_DISPLAY_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Invalid %s value: %s", unsafe_yyjson_get_str(key), error);
else
options->compactType = (FFDisplayCompactType) value;
continue;
}
if (ffStrEqualsIgnCase(key, "preciseRefreshRate"))
if (unsafe_yyjson_equals_str(key, "preciseRefreshRate"))
{
options->preciseRefreshRate = yyjson_get_bool(val);
continue;
}
if (ffStrEqualsIgnCase(key, "order"))
if (unsafe_yyjson_equals_str(key, "order"))
{
int value;
const char* error = ffJsonConfigParseEnum(val, &value, (FFKeyValuePair[]) {
@@ -304,13 +300,13 @@ void ffParseDisplayJsonObject(FFDisplayOptions* options, yyjson_val* module)
{},
});
if (error)
ffPrintError(FF_DISPLAY_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Invalid %s value: %s", key, error);
ffPrintError(FF_DISPLAY_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Invalid %s value: %s", unsafe_yyjson_get_str(key), error);
else
options->order = (FFDisplayOrder) value;
continue;
}
ffPrintError(FF_DISPLAY_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Unknown JSON key %s", key);
ffPrintError(FF_DISPLAY_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Unknown JSON key %s", unsafe_yyjson_get_str(key));
}
}