JR_STR_KV

Table of Contents

JR_STR_KV

Description

Read a string key-value pair if key matches.

Parameters

NameDirectionDescription
siin,outJSON stream iterator to read from.
kinExpected key name (C-string).
stroutDestination Str to store the value.

Usage example (from documentation)

  JR_STR_KV(si, "username", user.name);

Success

str contains the value if key matched

Failure

No-op if key does not match

Usage example (Cross-references)

    i64 last_value = 0;
    JR_OBJ(json, {
    JR_STR_KV(json, "name", enum_name);
    JR_BOOL_KV(json, "to_from_str", to_from_str);
    
    JR_OBJ_KV(json, "invalid_enum", {
    JR_STR_KV(json, "name", invalid_enum.name);
    JR_INT_KV(json, "value", invalid_enum.value);
    JR_INT_KV(json, "str", invalid_enum.value);
    
    JR_OBJ(json, {
    JR_STR_KV(json, "name", e.name);
    JR_INT_KV(json, "value", e.value);
    JR_STR_KV(json, "str", e.str);
    JR_STR_KV(json, "name", e.name);
    JR_INT_KV(json, "value", e.value);
    JR_STR_KV(json, "str", e.str);
    });
    JR_OBJ(json, {                                                                                                 \
    JR_OBJ_KV(json, "project", {                                                                               \
    JR_STR_KV(json, "build_dir", p.build_dir);                                                             \
    JR_ARR_KV(json, "test_directories", {                                                                  \
    Str s = StrInit();                                                                                 \
    
    JR_OBJ(si, {
    JR_STR_KV(si, "name", name);
    JR_STR_KV(si, "city", city);
    });
    JR_OBJ(si, {
    JR_STR_KV(si, "name", name);
    JR_STR_KV(si, "city", city);
    });
    JR_OBJ(si, {
    JR_INT_KV(si, "id", person.id);
    JR_STR_KV(si, "name", person.name);
    JR_INT_KV(si, "age", person.age);
    JR_BOOL_KV(si, "is_active", person.is_active);
    JR_BOOL_KV(si, "debug_mode", config.debug_mode);
    JR_INT_KV(si, "timeout", config.timeout);
    JR_STR_KV(si, "log_level", config.log_level);
    });
    JR_OBJ(si, {
    JR_OBJ_KV(si, "user", {
    JR_STR_KV(si, "name", data.user.name);
    JR_STR_KV(si, "email", data.user.email);
    });
    JR_OBJ_KV(si, "user", {
    JR_STR_KV(si, "name", data.user.name);
    JR_STR_KV(si, "email", data.user.email);
    });
    JR_BOOL_KV(si, "active", data.active);
    JR_OBJ(si, {
    JR_INT_KV(si, "id", product.id);
    JR_STR_KV(si, "name", product.name);
    JR_FLT_KV(si, "price", product.price);
    JR_ARR_KV(si, "tags", {
    
    JR_OBJ(si, {
    JR_STR_KV(si, "name", obj.name);
    JR_STR_KV(si, "description", obj.description);
    });
    JR_OBJ(si, {
    JR_STR_KV(si, "name", obj.name);
    JR_STR_KV(si, "description", obj.description);
    });
    
    JR_OBJ(si, {
    JR_STR_KV(si, "path", obj.path);
    JR_STR_KV(si, "message", obj.message);
    JR_STR_KV(si, "data", obj.data);
    JR_OBJ(si, {
    JR_STR_KV(si, "path", obj.path);
    JR_STR_KV(si, "message", obj.message);
    JR_STR_KV(si, "data", obj.data);
    });
    JR_STR_KV(si, "path", obj.path);
    JR_STR_KV(si, "message", obj.message);
    JR_STR_KV(si, "data", obj.data);
    });
    
    JR_OBJ(si, {
    JR_STR_KV(si, "escaped", obj.escaped);
    JR_STR_KV(si, "backslash", obj.backslash);
    JR_STR_KV(si, "newline", obj.newline);
    JR_OBJ(si, {
    JR_STR_KV(si, "escaped", obj.escaped);
    JR_STR_KV(si, "backslash", obj.backslash);
    JR_STR_KV(si, "newline", obj.newline);
    JR_STR_KV(si, "tab", obj.tab);
    JR_STR_KV(si, "escaped", obj.escaped);
    JR_STR_KV(si, "backslash", obj.backslash);
    JR_STR_KV(si, "newline", obj.newline);
    JR_STR_KV(si, "tab", obj.tab);
    });
    JR_STR_KV(si, "backslash", obj.backslash);
    JR_STR_KV(si, "newline", obj.newline);
    JR_STR_KV(si, "tab", obj.tab);
    });
    
    JR_OBJ(si, {
    JR_STR_KV(si, "name", obj.name);
    JR_INT_KV(si, "value", obj.value);
    JR_BOOL_KV(si, "flag", obj.flag);
    JR_FLT_KV(si, "temperature", parsed.temperature);
    JR_BOOL_KV(si, "enabled", parsed.enabled);
    JR_STR_KV(si, "message", parsed.message);
    });
    StrIter si = StrIterFromStr(json);
    JR_OBJ(si, {
    JR_STR_KV(si, "empty", parsed.empty);
    JR_STR_KV(si, "simple", parsed.simple);
    JR_STR_KV(si, "with_spaces", parsed.with_spaces);
    JR_OBJ(si, {
    JR_STR_KV(si, "empty", parsed.empty);
    JR_STR_KV(si, "simple", parsed.simple);
    JR_STR_KV(si, "with_spaces", parsed.with_spaces);
    JR_STR_KV(si, "with_special", parsed.with_special);
    JR_STR_KV(si, "empty", parsed.empty);
    JR_STR_KV(si, "simple", parsed.simple);
    JR_STR_KV(si, "with_spaces", parsed.with_spaces);
    JR_STR_KV(si, "with_special", parsed.with_special);
    });
    JR_STR_KV(si, "simple", parsed.simple);
    JR_STR_KV(si, "with_spaces", parsed.with_spaces);
    JR_STR_KV(si, "with_special", parsed.with_special);
    });
    JR_OBJ_KV(si, "user", {
    JR_INT_KV(si, "id", parsed_person.id);
    JR_STR_KV(si, "name", parsed_person.name);
    JR_INT_KV(si, "age", parsed_person.age);
    JR_BOOL_KV(si, "is_active", parsed_person.is_active);
    JR_OBJ_KV(si, "user", {
    JR_INT_KV(si, "id", parsed.user.id);
    JR_STR_KV(si, "name", parsed.user.name);
    JR_INT_KV(si, "age", parsed.user.age);
    JR_BOOL_KV(si, "is_active", parsed.user.is_active);
    JR_BOOL_KV(si, "debug_mode", parsed.config.debug_mode);
    JR_INT_KV(si, "timeout", parsed.config.timeout);
    JR_STR_KV(si, "log_level", parsed.config.log_level);
    JR_ARR_KV(si, "features", {
    Str feature = StrInit();
    StrIter si = StrIterFromStr(json);
    JR_OBJ(si, {
    JR_STR_KV(si, "empty_string", parsed_str);
    JR_ARR_KV(si, "empty_numbers", {
    i32 num = 0;
    JR_OBJ(si, {
    JR_INT_KV(si, "id", data.id);
    JR_STR_KV(si, "name", data.name);
    JR_BOOL_KV(si, "active", data.active);
    JR_FLT_KV(si, "score", data.score);
    JR_INT_KV(si, "id", data.user.id);
    JR_OBJ_KV(si, "profile", {
    JR_STR_KV(si, "name", data.user.profile.name);
    JR_INT_KV(si, "age", data.user.profile.age);
    });
    });
    });
    JR_STR_KV(si, "status", data.status);
    });
    JR_OBJ_KV(si, "departments", {
    JR_OBJ_KV(si, "engineering", {
    JR_STR_KV(si, "head", data.company.departments.engineering.head);
    JR_INT_KV(si, "count", data.company.departments.engineering.count);
    JR_FLT_KV(si, "budget", data.company.departments.engineering.budget);
    });
    });
    JR_STR_KV(si, "name", data.company.name);
    });
    });
    JR_OBJ(si, {
    JR_FLT_KV(si, "distance", sym.distance);
    JR_STR_KV(si, "name", sym.function_name);
    });
    JR_OBJ(si, {
    JR_BOOL_KV(si, "status", response.status);
    JR_STR_KV(si, "message", response.message);
    
    if (response.status) {
    JR_INT_KV(si, "nearest_neighbor_analysis_id", sym.analysis_id);
    JR_INT_KV(si, "nearest_neighbor_binary_id", sym.binary_id);
    JR_STR_KV(si, "nearest_neighbor_analysis_name", sym.analysis_name);
    JR_STR_KV(si, "nearest_neighbor_function_name", sym.function_name);
    JR_STR_KV(si, "nearest_neighbor_sha_256_hash", sym.sha256);
    JR_INT_KV(si, "nearest_neighbor_binary_id", sym.binary_id);
    JR_STR_KV(si, "nearest_neighbor_analysis_name", sym.analysis_name);
    JR_STR_KV(si, "nearest_neighbor_function_name", sym.function_name);
    JR_STR_KV(si, "nearest_neighbor_sha_256_hash", sym.sha256);
    JR_BOOL_KV(si, "nearest_neighbor_debug", sym.debug);
    JR_STR_KV(si, "nearest_neighbor_analysis_name", sym.analysis_name);
    JR_STR_KV(si, "nearest_neighbor_function_name", sym.function_name);
    JR_STR_KV(si, "nearest_neighbor_sha_256_hash", sym.sha256);
    JR_BOOL_KV(si, "nearest_neighbor_debug", sym.debug);
    JR_STR_KV(si, "nearest_neighbor_function_name_mangled", sym.function_mangled_name);
    JR_STR_KV(si, "nearest_neighbor_sha_256_hash", sym.sha256);
    JR_BOOL_KV(si, "nearest_neighbor_debug", sym.debug);
    JR_STR_KV(si, "nearest_neighbor_function_name_mangled", sym.function_mangled_name);
    });
    JR_OBJ(si, {
    JR_INT_KV(si, "id", info.id);
    JR_STR_KV(si, "name", info.name);
    JR_INT_KV(si, "size", info.size);
    JR_INT_KV(si, "vaddr", info.vaddr);
    JR_OBJ(si, {
    JR_INT_KV(si, "id", info.id);
    JR_STR_KV(si, "name", info.name);
    });
    JR_OBJ(si, {
    JR_INT_KV(si, "binary_id", result.binary_id);
    JR_STR_KV(si, "binary_name", result.binary_name);
    JR_INT_KV(si, "analysis_id", result.analysis_id);
    JR_STR_KV(si, "sha256", result.sha256);
    JR_STR_KV(si, "binary_name", result.binary_name);
    JR_INT_KV(si, "analysis_id", result.analysis_id);
    JR_STR_KV(si, "sha256", result.sha256);
    JR_STR_KV(si, "created_at", result.created_at);
    JR_INT_KV(si, "model_id", result.model_id);
    JR_INT_KV(si, "analysis_id", result.analysis_id);
    JR_STR_KV(si, "sha256", result.sha256);
    JR_STR_KV(si, "created_at", result.created_at);
    JR_INT_KV(si, "model_id", result.model_id);
    JR_STR_KV(si, "model_name", result.model_name);
    JR_STR_KV(si, "created_at", result.created_at);
    JR_INT_KV(si, "model_id", result.model_id);
    JR_STR_KV(si, "model_name", result.model_name);
    JR_STR_KV(si, "owned_by", result.owned_by);
    });
    JR_INT_KV(si, "model_id", result.model_id);
    JR_STR_KV(si, "model_name", result.model_name);
    JR_STR_KV(si, "owned_by", result.owned_by);
    });
    JR_OBJ(si, {
    JR_BOOL_KV(si, "status", response.status);
    JR_STR_KV(si, "message", response.message);
    
    printf("[DEBUG] Parsed status: %s, message: '", response.status ? "true" : "false");
    JR_INT_KV(si, "nearest_neighbor_analysis_id", sym.analysis_id);
    JR_INT_KV(si, "nearest_neighbor_binary_id", sym.binary_id);
    JR_STR_KV(si, "nearest_neighbor_analysis_name", sym.analysis_name);
    JR_STR_KV(si, "nearest_neighbor_function_name", sym.function_name);
    JR_STR_KV(si, "nearest_neighbor_sha_256_hash", sym.sha256);
    JR_INT_KV(si, "nearest_neighbor_binary_id", sym.binary_id);
    JR_STR_KV(si, "nearest_neighbor_analysis_name", sym.analysis_name);
    JR_STR_KV(si, "nearest_neighbor_function_name", sym.function_name);
    JR_STR_KV(si, "nearest_neighbor_sha_256_hash", sym.sha256);
    JR_BOOL_KV(si, "nearest_neighbor_debug", sym.debug);
    JR_STR_KV(si, "nearest_neighbor_analysis_name", sym.analysis_name);
    JR_STR_KV(si, "nearest_neighbor_function_name", sym.function_name);
    JR_STR_KV(si, "nearest_neighbor_sha_256_hash", sym.sha256);
    JR_BOOL_KV(si, "nearest_neighbor_debug", sym.debug);
    JR_STR_KV(si, "nearest_neighbor_function_name_mangled", sym.function_mangled_name);
    JR_STR_KV(si, "nearest_neighbor_sha_256_hash", sym.sha256);
    JR_BOOL_KV(si, "nearest_neighbor_debug", sym.debug);
    JR_STR_KV(si, "nearest_neighbor_function_name_mangled", sym.function_mangled_name);
    });
    JR_OBJ(si, {
    JR_BOOL_KV(si, "status", response.status);
    JR_STR_KV(si, "message", response.message);
    
    printf("[DEBUG] Parsed status: %s, message: '", response.status ? "true" : "false");
    JR_INT_KV(si, "nearest_neighbor_analysis_id", sym.analysis_id);
    JR_INT_KV(si, "nearest_neighbor_binary_id", sym.binary_id);
    JR_STR_KV(si, "nearest_neighbor_analysis_name", sym.analysis_name);
    JR_STR_KV(si, "nearest_neighbor_function_name", sym.function_name);
    JR_STR_KV(si, "nearest_neighbor_sha_256_hash", sym.sha256);
    JR_INT_KV(si, "nearest_neighbor_binary_id", sym.binary_id);
    JR_STR_KV(si, "nearest_neighbor_analysis_name", sym.analysis_name);
    JR_STR_KV(si, "nearest_neighbor_function_name", sym.function_name);
    JR_STR_KV(si, "nearest_neighbor_sha_256_hash", sym.sha256);
    JR_BOOL_KV(si, "nearest_neighbor_debug", sym.debug);
    JR_STR_KV(si, "nearest_neighbor_analysis_name", sym.analysis_name);
    JR_STR_KV(si, "nearest_neighbor_function_name", sym.function_name);
    JR_STR_KV(si, "nearest_neighbor_sha_256_hash", sym.sha256);
    JR_BOOL_KV(si, "nearest_neighbor_debug", sym.debug);
    JR_STR_KV(si, "nearest_neighbor_function_name_mangled", sym.function_mangled_name);
    JR_STR_KV(si, "nearest_neighbor_sha_256_hash", sym.sha256);
    JR_BOOL_KV(si, "nearest_neighbor_debug", sym.debug);
    JR_STR_KV(si, "nearest_neighbor_function_name_mangled", sym.function_mangled_name);
    });

Share :

Related Posts

JReadString

JReadString Description Read a quoted string, handling escape sequences.

Read More

JReadBool

JReadBool Description Read a boolean value (“true” or “false”) from input string.

Read More

JR_STR

JR_STR Description Read a JSON string value from stream and assign to target. The resulting string is dynamically allocated in Str format.

Read More