firmware-base/docs-c/core/json.md
2025-06-04 16:50:34 +02:00

2.4 KiB

title description keywords
JSON Utilities Utility functions for parsing JSON data in embedded applications
JSON
ArduinoJson
parsing
ESP32
embedded

JSON Utilities

Path: src/utils/json_utils.h

Revision History:

  • Initial documentation

A collection of inline utility functions for parsing JSON data in embedded applications. These functions provide a consistent way to extract values from JSON objects, with built-in type validation and error reporting.

REQUIREMENTS

  • ArduinoJson library
  • ArduinoLog library

PROVIDES

  • JsonUtils namespace containing utility functions:
    • parseJsonFieldUint32: Parses a 32-bit unsigned integer from JSON
    • parseJsonFieldUint8: Parses an 8-bit unsigned integer from JSON
    • parseJsonFieldBool: Parses a boolean value from JSON

FEATURES

  • Type validation for JSON field parsing
  • Maintains default values when fields are missing or of incorrect type
  • Debug logging for parsing errors
  • Consistent parsing interface across different data types

DEPENDENCIES

graph TD
    JsonUtils --> ArduinoJson
    JsonUtils --> ArduinoLog

BEHAVIOUR

graph TD
    Start([Parse JSON Field]) --> CheckField{Field exists?}
    CheckField -- Yes --> CheckType{Correct type?}
    CheckField -- No --> UseDefault[Use default value]
    CheckType -- Yes --> AssignValue[Assign parsed value]
    CheckType -- No --> LogWarning[Log warning] --> UseDefault
    AssignValue --> End([End])
    UseDefault --> End

TODOS

PERFORMANCE

  • Consider providing batch parsing functions to reduce parsing overhead for multiple fields
  • Evaluate memory usage when parsing large JSON objects

SECURITY

  • Currently no validation for value ranges; consider adding range validation options
  • Implement protection against malformed JSON that could lead to buffer overflows

COMPLIANCE

  • Ensure all error messages follow consistent formatting standards
  • Consider adding more documentation for compliance with project coding standards

RECOMMENDATIONS

  • Add support for additional data types (e.g., float, string)
  • Consider a more structured approach to error handling (e.g., error codes or exceptions)
  • Add functions for array parsing and nested object traversal
  • Provide examples of common JSON parsing scenarios