RedfishPkg[all]  1.0
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
JsonLib.h File Reference

Data Structures

struct  EDKII_JSON_ERROR
 

Macros

#define EDKII_JSON_MAX_INDENT   0x1F
 
#define EDKII_JSON_INDENT(n)   ((n) & EDKII_JSON_MAX_INDENT)
 
#define EDKII_JSON_COMPACT   0x20
 
#define EDKII_JSON_ENSURE_ASCII   0x40
 
#define EDKII_JSON_SORT_KEYS   0x80
 
#define EDKII_JSON_PRESERVE_ORDER   0x100
 
#define EDKII_JSON_ENCODE_ANY   0x200
 
#define EDKII_JSON_ESCAPE_SLASH   0x400
 
#define EDKII_JSON_REAL_PRECISION(n)   (((n) & 0x1F) << 11)
 
#define EDKII_JSON_EMBED   0x10000
 
#define EDKII_JSON_REJECT_DUPLICATES   0x1
 
#define EDKII_JSON_DISABLE_EOF_CHECK   0x2
 
#define EDKII_JSON_DECODE_ANY   0x4
 
#define EDKII_JSON_DECODE_INT_AS_REAL   0x8
 
#define EDKII_JSON_ALLOW_NUL   0x10
 
#define EDKII_JSON_ARRAY_FOREACH(Array, Index, Value)
 
#define EDKII_JSON_OBJECT_FOREACH_SAFE(Object, N, Key, Value)
 
#define EDKII_JSON_ERROR_TEXT_LENGTH   160
 
#define EDKII_JSON_ERROR_SOURCE_LENGTH   80
 

Typedefs

typedef VOID * EDKII_JSON_VALUE
 
typedef VOID * EDKII_JSON_ARRAY
 
typedef VOID * EDKII_JSON_OBJECT
 
typedef INT64 EDKII_JSON_INT_T
 

Enumerations

enum  EDKII_JSON_TYPE {
  EdkiiJsonTypeObject, EdkiiJsonTypeArray, EdkiiJsonTypeString, EdkiiJsonTypeInteger,
  EdkiiJsonTypeReal, EdkiiJsonTypeTrue, EdkiiJsonTypeFalse, EdkiiJsonTypeNull
}
 

Functions

EDKII_JSON_VALUE EFIAPI JsonValueInitArray (VOID)
 
EDKII_JSON_VALUE EFIAPI JsonValueInitObject (VOID)
 
EDKII_JSON_VALUE EFIAPI JsonValueInitAsciiString (IN CONST CHAR8 *String)
 
EDKII_JSON_VALUE EFIAPI JsonValueInitUnicodeString (IN CHAR16 *String)
 
EDKII_JSON_VALUE EFIAPI JsonValueInitInteger (IN INT64 Value)
 
EDKII_JSON_VALUE EFIAPI JsonValueInitBoolean (IN BOOLEAN Value)
 
EDKII_JSON_VALUE EFIAPI JsonValueInitNull (VOID)
 
EDKII_JSON_VALUE EFIAPI JsonValueInitTrue (VOID)
 
EDKII_JSON_VALUE EFIAPI JsonValueInitFalse (VOID)
 
VOID EFIAPI JsonValueFree (IN EDKII_JSON_VALUE Json)
 
EDKII_JSON_VALUE EFIAPI JsonValueClone (IN EDKII_JSON_VALUE Json)
 
BOOLEAN EFIAPI JsonValueIsArray (IN EDKII_JSON_VALUE Json)
 
BOOLEAN EFIAPI JsonValueIsObject (IN EDKII_JSON_VALUE Json)
 
BOOLEAN EFIAPI JsonValueIsString (IN EDKII_JSON_VALUE Json)
 
BOOLEAN EFIAPI JsonValueIsInteger (IN EDKII_JSON_VALUE Json)
 
BOOLEAN EFIAPI JsonValueIsNumber (IN EDKII_JSON_VALUE Json)
 
BOOLEAN EFIAPI JsonValueIsBoolean (IN EDKII_JSON_VALUE Json)
 
BOOLEAN EFIAPI JsonValueIsTrue (IN EDKII_JSON_VALUE Json)
 
BOOLEAN EFIAPI JsonValueIsFalse (IN EDKII_JSON_VALUE Json)
 
BOOLEAN EFIAPI JsonValueIsNull (IN EDKII_JSON_VALUE Json)
 
EDKII_JSON_ARRAY EFIAPI JsonValueGetArray (IN EDKII_JSON_VALUE Json)
 
EDKII_JSON_OBJECT EFIAPI JsonValueGetObject (IN EDKII_JSON_VALUE Json)
 
CONST CHAR8 *EFIAPI JsonValueGetAsciiString (IN EDKII_JSON_VALUE Json)
 
CHAR16 *EFIAPI JsonValueGetUnicodeString (IN EDKII_JSON_VALUE Json)
 
INT64 EFIAPI JsonValueGetInteger (IN EDKII_JSON_VALUE Json)
 
BOOLEAN EFIAPI JsonValueGetBoolean (IN EDKII_JSON_VALUE Json)
 
CONST CHAR8 *EFIAPI JsonValueGetString (IN EDKII_JSON_VALUE Json)
 
UINTN EFIAPI JsonObjectSize (IN EDKII_JSON_OBJECT JsonObject)
 
CHAR8 ** JsonObjectGetKeys (IN EDKII_JSON_OBJECT JsonObj, OUT UINTN *KeyCount)
 
EDKII_JSON_VALUE EFIAPI JsonObjectGetValue (IN CONST EDKII_JSON_OBJECT JsonObj, IN CONST CHAR8 *Key)
 
EFI_STATUS EFIAPI JsonObjectSetValue (IN EDKII_JSON_OBJECT JsonObj, IN CONST CHAR8 *Key, IN EDKII_JSON_VALUE Json)
 
UINTN EFIAPI JsonArrayCount (IN EDKII_JSON_ARRAY JsonArray)
 
EDKII_JSON_VALUE EFIAPI JsonArrayGetValue (IN EDKII_JSON_ARRAY JsonArray, IN UINTN Index)
 
EFI_STATUS EFIAPI JsonArrayAppendValue (IN EDKII_JSON_ARRAY JsonArray, IN EDKII_JSON_VALUE Json)
 
EFI_STATUS EFIAPI JsonArrayRemoveValue (IN EDKII_JSON_ARRAY JsonArray, IN UINTN Index)
 
CHAR8 *EFIAPI JsonDumpString (IN EDKII_JSON_VALUE JsonValue, IN UINTN Flags)
 
EDKII_JSON_VALUE EFIAPI JsonLoadString (IN CONST CHAR8 *String, IN UINT64 Flags, IN EDKII_JSON_ERROR *Error)
 
EDKII_JSON_VALUE EFIAPI JsonLoadBuffer (IN CONST CHAR8 *Buffer, IN UINTN BufferLen, IN UINTN Flags, IN OUT EDKII_JSON_ERROR *Error)
 
VOID EFIAPI JsonDecreaseReference (IN EDKII_JSON_VALUE JsonValue)
 
EDKII_JSON_VALUE EFIAPI JsonIncreaseReference (IN EDKII_JSON_VALUE JsonValue)
 
VOID *EFIAPI JsonObjectIterator (IN EDKII_JSON_VALUE JsonValue)
 
EDKII_JSON_VALUE EFIAPI JsonObjectIteratorValue (IN VOID *Iterator)
 
VOID *EFIAPI JsonObjectIteratorNext (IN EDKII_JSON_VALUE JsonValue, IN VOID *Iterator)
 
CHAR8 *EFIAPI JsonObjectIteratorKey (IN VOID *Iterator)
 
VOID *EFIAPI JsonObjectKeyToIterator (IN CHAR8 *Key)
 
EDKII_JSON_TYPE EFIAPI JsonGetType (IN EDKII_JSON_VALUE JsonValue)
 

Detailed Description

APIs for JSON operations.

Copyright (c) 2019, Intel Corporation. All rights reserved.
(C) Copyright 2021 Hewlett Packard Enterprise Development LP

SPDX-License-Identifier: BSD-2-Clause-Patent

Macro Definition Documentation

#define EDKII_JSON_ALLOW_NUL   0x10
#define EDKII_JSON_ARRAY_FOREACH (   Array,
  Index,
  Value 
)
Value:
for(Index = 0; \
Index < JsonArrayCount(Array) && (Value = JsonArrayGetValue(Array, Index)); \
Index++)
UINTN EFIAPI JsonArrayCount(IN EDKII_JSON_ARRAY JsonArray)
EDKII_JSON_VALUE EFIAPI JsonArrayGetValue(IN EDKII_JSON_ARRAY JsonArray, IN UINTN Index)
#define EDKII_JSON_COMPACT   0x20
#define EDKII_JSON_DECODE_ANY   0x4
#define EDKII_JSON_DECODE_INT_AS_REAL   0x8
#define EDKII_JSON_DISABLE_EOF_CHECK   0x2
#define EDKII_JSON_EMBED   0x10000
#define EDKII_JSON_ENCODE_ANY   0x200
#define EDKII_JSON_ENSURE_ASCII   0x40
#define EDKII_JSON_ERROR_SOURCE_LENGTH   80
#define EDKII_JSON_ERROR_TEXT_LENGTH   160

Map to the json_error_t in jansson.h

#define EDKII_JSON_ESCAPE_SLASH   0x400
#define EDKII_JSON_INDENT (   n)    ((n) & EDKII_JSON_MAX_INDENT)
#define EDKII_JSON_MAX_INDENT   0x1F

Map to the definitions in jansson.h See below URI for the JSON encoding flags reference. https://jansson.readthedocs.io/en/2.13/apiref.html#encoding

#define EDKII_JSON_OBJECT_FOREACH_SAFE (   Object,
  N,
  Key,
  Value 
)
Value:
VOID *EFIAPI JsonObjectKeyToIterator(IN CHAR8 *Key)
VOID *EFIAPI JsonObjectIteratorNext(IN EDKII_JSON_VALUE JsonValue, IN VOID *Iterator)
EDKII_JSON_VALUE EFIAPI JsonObjectIteratorValue(IN VOID *Iterator)
VOID *EFIAPI JsonObjectIterator(IN EDKII_JSON_VALUE JsonValue)
CHAR8 *EFIAPI JsonObjectIteratorKey(IN VOID *Iterator)
#define EDKII_JSON_PRESERVE_ORDER   0x100
#define EDKII_JSON_REAL_PRECISION (   n)    (((n) & 0x1F) << 11)
#define EDKII_JSON_REJECT_DUPLICATES   0x1

Map to the definitions in jansson.h See below URI for the JSON decoding flags reference. https://jansson.readthedocs.io/en/2.13/apiref.html?highlight=json_loadb#decoding

#define EDKII_JSON_SORT_KEYS   0x80

Typedef Documentation

typedef VOID* EDKII_JSON_ARRAY
typedef INT64 EDKII_JSON_INT_T

Map to json_int_t in jansson.h

typedef VOID* EDKII_JSON_OBJECT
typedef VOID* EDKII_JSON_VALUE

Enumeration Type Documentation

Map to the json_type in jansson.h

Enumerator
EdkiiJsonTypeObject 
EdkiiJsonTypeArray 
EdkiiJsonTypeString 
EdkiiJsonTypeInteger 
EdkiiJsonTypeReal 
EdkiiJsonTypeTrue 
EdkiiJsonTypeFalse 
EdkiiJsonTypeNull 

Function Documentation

EFI_STATUS EFIAPI JsonArrayAppendValue ( IN EDKII_JSON_ARRAY  JsonArray,
IN EDKII_JSON_VALUE  Json 
)

The function is used to append a JSON value to the end of the JSON array, and grow the size of array by 1. The reference count of this value will be increased by 1.

More details for reference count strategy can refer to the API description for JsonValueFree().

Parameters
[in]JsonArrayThe provided JSON object.
[in]JsonThe JSON value to append.
Return values
EFI_ABORTEDSome error occur and operation aborted.
EFI_SUCCESSJSON value has been appended to the end of the JSON array.
UINTN EFIAPI JsonArrayCount ( IN EDKII_JSON_ARRAY  JsonArray)

The function is used to get the number of elements in a JSON array. Returns or 0 if JsonArray is NULL or not a JSON array.

Parameters
[in]JsonArrayThe provided JSON array.
Return values
Returnthe number of elements in this JSON array or 0.
EDKII_JSON_VALUE EFIAPI JsonArrayGetValue ( IN EDKII_JSON_ARRAY  JsonArray,
IN UINTN  Index 
)

The function is used to return the JSON value in the array at position index. The valid range for this index is from 0 to the return value of JsonArrayCount() minus 1.

It only returns a reference to this value and any changes on this value will impact the original JSON object. If that is not expected, please call JsonValueClone() to clone it to use.

If this array is NULL or not a JSON array, or if index is out of range, NULL will be returned.

Parameters
[in]JsonArrayThe provided JSON Array.
Return values
Returnthe JSON value located in the Index position or NULL if JsonArray is not an array or no items in the array.
EFI_STATUS EFIAPI JsonArrayRemoveValue ( IN EDKII_JSON_ARRAY  JsonArray,
IN UINTN  Index 
)

The function is used to remove a JSON value at position index, shifting the elements after index one position towards the start of the array. The reference count of this value will be decreased by 1.

More details for reference count strategy can refer to the API description for JsonValueFree().

Parameters
[in]JsonArrayThe provided JSON array.
[in]IndexThe Index position before removement.
Return values
EFI_ABORTEDSome error occur and operation aborted.
EFI_SUCCESSThe JSON array has been removed at position index.
VOID EFIAPI JsonDecreaseReference ( IN EDKII_JSON_VALUE  JsonValue)

The reference count is used to track whether a value is still in use or not. When a value is created, it's reference count is set to 1. when the value is no longer needed, the reference count is decremented. When the reference count drops to zero, there are no references left and the value can be destroyed.

This funciton decrement the reference count of EDKII_JSON_VALUE. As soon as a call to json_decref() drops the reference count to zero, the value is destroyed and it can no longer be used.

Parameters
[in]JsonValueJSON value
CHAR8* EFIAPI JsonDumpString ( IN EDKII_JSON_VALUE  JsonValue,
IN UINTN  Flags 
)

Dump JSON to a buffer.

Parameters
[in]JsonValueThe provided JSON value.
[in]FlagsThe Index position before removement. The value could be the combination of below flags.
Return values
CHAR8* Dump fail if NULL returned, otherwise the buffer contain JSON paylaod in ASCII string. The return value must be freed by the caller FreePool().
EDKII_JSON_TYPE EFIAPI JsonGetType ( IN EDKII_JSON_VALUE  JsonValue)

Returns the json type of this json value

Parameters
[in]JsonValueJSON value
Return values
JSONtype returned
EDKII_JSON_VALUE EFIAPI JsonIncreaseReference ( IN EDKII_JSON_VALUE  JsonValue)

The reference count is used to track whether a value is still in use or not. When a value is created, it's reference count is set to 1. If a reference to a value is kept (e.g. a value is stored somewhere for later use), its reference count is incremented.

This function increment the reference count of json if it's not NULL. Returns EDKII_JSON_VALUE.

Parameters
[in]JsonValueJSON value
Return values
EDKII_JSON_VALUEof itself
EDKII_JSON_VALUE EFIAPI JsonLoadBuffer ( IN CONST CHAR8 *  Buffer,
IN UINTN  BufferLen,
IN UINTN  Flags,
IN OUT EDKII_JSON_ERROR Error 
)

Load JSON from a buffer.

Parameters
[in]BufferBufffer to the JSON payload
[in]BufferLenLength of the buffer
[in]FlagsFlag of loading JSON buffer, the value could be the combination of below flags.
[in,out]ErrorPointer EDKII_JSON_ERROR structure
Return values
EDKII_JSON_VALUENULL means fail to load JSON payload.
EDKII_JSON_VALUE EFIAPI JsonLoadString ( IN CONST CHAR8 *  String,
IN UINT64  Flags,
IN EDKII_JSON_ERROR Error 
)

Convert a string to JSON object. The function is used to convert a NULL terminated CHAR8 string to a JSON value. Only object and array represented strings can be converted successfully, since they are the only valid root values of a JSON text for UEFI usage.

Real number and number with exponent part are not supportted by UEFI.

Caller needs to cleanup the root value by calling JsonValueFree().

Parameters
[in]StringThe NULL terminated CHAR8 string to convert.
[in]FlagsFlags for loading JSON string.
[in]ErrorReturned error status.
Return values
ArrayJSON value or object JSON value, or NULL when any error occurs.
CHAR8** JsonObjectGetKeys ( IN EDKII_JSON_OBJECT  JsonObj,
OUT UINTN *  KeyCount 
)

The function is used to enumerate all keys in a JSON object.

Caller should be responsible to free the returned key array reference using FreePool(). But contained keys are read only and must not be modified or freed.

Parameters
[in]JsonObjThe provided JSON object for enumeration.
[out]KeyCountThe count of keys in this JSON object.
Return values
Returnan array of the enumerated keys in this JSON object or NULL if JsonObj is not an JSON object, key count is zero or on other errors.
EDKII_JSON_VALUE EFIAPI JsonObjectGetValue ( IN CONST EDKII_JSON_OBJECT  JsonObj,
IN CONST CHAR8 *  Key 
)

The function is used to get a JSON value corresponding to the input key from a JSON object.

It only returns a reference to this value and any changes on this value will impact the original JSON object. If that is not expected, please call JsonValueClone() to clone it to use.

Input key must be a valid NULL terminated UTF8 encoded string. NULL will be returned when Key-Value is not found in this JSON object.

Parameters
[in]JsonObjThe provided JSON object.
[in]KeyThe key of the JSON value to be retrieved.
Return values
Returnthe corresponding JSON value to key, or NULL on error.
VOID* EFIAPI JsonObjectIterator ( IN EDKII_JSON_VALUE  JsonValue)

Returns an opaque iterator which can be used to iterate over all key-value pairs in object, or NULL if object is empty

Parameters
[in]JsonValueJSON value
CHAR8* EFIAPI JsonObjectIteratorKey ( IN VOID *  Iterator)

Returns the key of iterator pointing

Parameters
[in]IteratorIterator pointer
Return values
Key
VOID* EFIAPI JsonObjectIteratorNext ( IN EDKII_JSON_VALUE  JsonValue,
IN VOID *  Iterator 
)

Returns an iterator pointing to the next key-value pair in object after iter, or NULL if the whole object has been iterated through.

Parameters
[in]JsonValueJSON value
[in]IteratorIterator pointer
Return values
Iteratorpointer
EDKII_JSON_VALUE EFIAPI JsonObjectIteratorValue ( IN VOID *  Iterator)

Extract the associated value from iterator.

Parameters
[in]IteratorIterator pointer
VOID* EFIAPI JsonObjectKeyToIterator ( IN CHAR8 *  Key)

Returns the pointer of iterator by key.

Parameters
[in]KeyThe key of interator pointer.
Return values
Pointerto interator
EFI_STATUS EFIAPI JsonObjectSetValue ( IN EDKII_JSON_OBJECT  JsonObj,
IN CONST CHAR8 *  Key,
IN EDKII_JSON_VALUE  Json 
)

The function is used to set a JSON value corresponding to the input key from a JSON object, and the reference count of this value will be increased by 1.

Input key must be a valid NULL terminated UTF8 encoded string. If there already is a value for this key, this key will be assigned to the new JSON value. The old JSON value will be removed from this object and thus its' reference count will be decreased by 1.

More details for reference count strategy can refer to the API description for JsonValueFree().

Parameters
[in]JsonObjThe provided JSON object.
[in]KeyThe key of the JSON value to be set.
[in]JsonThe JSON value to set to this JSON object mapped by key.
Return values
EFI_ABORTEDSome error occur and operation aborted.
EFI_SUCCESSThe JSON value has been set to this JSON object.
UINTN EFIAPI JsonObjectSize ( IN EDKII_JSON_OBJECT  JsonObject)

The function is used to get the number of elements in a JSON object, or 0 if it is NULL or not a JSON object.

Parameters
[in]JsonObjectThe provided JSON object.
Return values
Returnthe number of elements in this JSON object or 0.
EDKII_JSON_VALUE EFIAPI JsonValueClone ( IN EDKII_JSON_VALUE  Json)

The function is used to create a fresh copy of a JSON value, and all child values are deep copied in a recursive fashion. It should be called when this JSON value might be modified in later use, but the original still wants to be used in somewhere else.

Reference counts of the returned root JSON value and all child values will be set to 1, and caller needs to cleanup the root value by calling JsonValueFree().

Note: Since this function performs a copy from bottom to up, too many calls may cause some performance issues, user should avoid unnecessary calls to this function unless it is really needed.

Parameters
[in]JsonThe JSON value to be cloned.
Return values
Returnthe cloned JSON value, or NULL on error.
VOID EFIAPI JsonValueFree ( IN EDKII_JSON_VALUE  Json)

The function is used to decrease the reference count of a JSON value by one, and once this reference count drops to zero, the value is destroyed and it can no longer be used. If this destroyed value is object type or array type, reference counts for all containing JSON values will be decreased by 1. Boolean JSON value and NULL JSON value won't be destroyed since they are static values kept in memory.

Reference Count Strategy: BaseJsonLib uses this strategy to track whether a value is still in use or not. When a value is created, it's reference count is set to 1. If a reference to a value is kept for use, its reference count is incremented, and when the value is no longer needed, the reference count is decremented. When the reference count drops to zero, there are no references left, and the value can be destroyed.

The given JSON value maybe NULL and not causing any problem. Just output the debug message to inform caller the NULL value is passed in.

Parameters
[in]JsonThe JSON value to be freed. json_decref may return without any changes if Json is NULL.
EDKII_JSON_ARRAY EFIAPI JsonValueGetArray ( IN EDKII_JSON_VALUE  Json)

The function is used to retrieve the associated array in an array type JSON value.

Any changes to the returned array will impact the original JSON value.

Parameters
[in]JsonThe provided JSON value.
Return values
Returnthe associated array in JSON value or NULL.
CONST CHAR8* EFIAPI JsonValueGetAsciiString ( IN EDKII_JSON_VALUE  Json)

The function is used to retrieve the associated Ascii string in a string type JSON value.

Any changes to the returned string will impact the original JSON value.

Parameters
[in]JsonThe provided JSON value.
Return values
Returnthe associated Ascii string in JSON value or NULL.
BOOLEAN EFIAPI JsonValueGetBoolean ( IN EDKII_JSON_VALUE  Json)

The function is used to retrieve the associated boolean in a boolean type JSON value.

The input JSON value should not be NULL or contain no JSON boolean, otherwise it will ASSERT() and return FALSE.

Parameters
[in]JsonThe provided JSON value.
Return values
Returnthe associated value of JSON boolean.
INT64 EFIAPI JsonValueGetInteger ( IN EDKII_JSON_VALUE  Json)

The function is used to retrieve the associated integer in a integer type JSON value.

The input JSON value should not be NULL or contain no JSON Integer, otherwise it will ASSERT() and return 0.

Parameters
[in]JsonThe provided JSON value.
Return values
Returnthe associated Integer in JSON value.
EDKII_JSON_OBJECT EFIAPI JsonValueGetObject ( IN EDKII_JSON_VALUE  Json)

The function is used to retrieve the associated object in an object type JSON value.

Any changes to the returned object will impact the original JSON value.

Parameters
[in]JsonThe provided JSON value.
Return values
Returnthe associated object in JSON value or NULL.
CONST CHAR8* EFIAPI JsonValueGetString ( IN EDKII_JSON_VALUE  Json)

The function is used to retrieve the associated string in a string type JSON value.

Any changes to the returned string will impact the original JSON value.

Parameters
[in]JsonThe provided JSON value.
Return values
Returnthe associated Ascii string in JSON value or NULL on errors.
CHAR16* EFIAPI JsonValueGetUnicodeString ( IN EDKII_JSON_VALUE  Json)

The function is used to retrieve the associated Unicode string in a string type JSON value.

Caller can do any changes to the returned string without any impact to the original JSON value, and caller needs to free the returned string using FreePool().

Parameters
[in]JsonThe provided JSON value.
Return values
Returnthe associated Unicode string in JSON value or NULL.
EDKII_JSON_VALUE EFIAPI JsonValueInitArray ( VOID  )

The function is used to initialize a JSON value which contains a new JSON array, or NULL on error. Initially, the array is empty.

The reference count of this value will be set to 1, and caller needs to cleanup the value by calling JsonValueFree().

More details for reference count strategy can refer to the API description for JsonValueFree().

Return values
Thecreated JSON value which contains a JSON array or NULL if intial a JSON array is failed.
EDKII_JSON_VALUE EFIAPI JsonValueInitAsciiString ( IN CONST CHAR8 *  String)

The function is used to initialize a JSON value which contains a new JSON string, or NULL on error.

The input string must be NULL terminated Ascii format, non-Ascii characters will be processed as an error. Unicode characters can also be represented by Ascii string as the format: + 4 hexadecimal digits, like , or .

The reference count of this value will be set to 1, and caller needs to cleanup the value by calling JsonValueFree().

More details for reference count strategy can refer to the API description for JsonValueFree().

Parameters
[in]StringThe Ascii string to initialize to JSON value
Return values
Thecreated JSON value which contains a JSON string or NULL. Select a Getter API for a specific encoding format.
EDKII_JSON_VALUE EFIAPI JsonValueInitBoolean ( IN BOOLEAN  Value)

The function is used to initialize a JSON value which contains a new JSON boolean, or NULL on error.

Boolean JSON value is kept as static value, and no need to do any cleanup work.

Parameters
[in]ValueThe boolean value to initialize.
Return values
Thecreated JSON value which contains a JSON boolean or NULL.
EDKII_JSON_VALUE EFIAPI JsonValueInitFalse ( VOID  )

The function is used to initialize a JSON value which contains a FALSE JSON value, or NULL on error.

NULL JSON value is kept as static value, and no need to do any cleanup work.

Return values
Thecreated JSON FALSE value.
EDKII_JSON_VALUE EFIAPI JsonValueInitInteger ( IN INT64  Value)

The function is used to initialize a JSON value which contains a new JSON integer, or NULL on error.

The reference count of this value will be set to 1, and caller needs to cleanup the value by calling JsonValueFree().

More details for reference count strategy can refer to the API description for JsonValueFree().

Parameters
[in]ValueThe integer to initialize to JSON value
Return values
Thecreated JSON value which contains a JSON integer or NULL.
EDKII_JSON_VALUE EFIAPI JsonValueInitNull ( VOID  )

The function is used to initialize a JSON value which contains a new JSON NULL, or NULL on error.

NULL JSON value is kept as static value, and no need to do any cleanup work.

Return values
Thecreated NULL JSON value.
EDKII_JSON_VALUE EFIAPI JsonValueInitObject ( VOID  )

The function is used to initialize a JSON value which contains a new JSON object, or NULL on error. Initially, the object is empty.

The reference count of this value will be set to 1, and caller needs to cleanup the value by calling JsonValueFree().

More details for reference count strategy can refer to the API description for JsonValueFree().

Return values
Thecreated JSON value which contains a JSON object or NULL if intial a JSON object is failed.
EDKII_JSON_VALUE EFIAPI JsonValueInitTrue ( VOID  )

The function is used to initialize a JSON value which contains a TRUE JSON value, or NULL on error.

NULL JSON value is kept as static value, and no need to do any cleanup work.

Return values
Thecreated JSON TRUE value.
EDKII_JSON_VALUE EFIAPI JsonValueInitUnicodeString ( IN CHAR16 *  String)

The function is used to initialize a JSON value which contains a new JSON string, or NULL on error.

The input must be a NULL terminated UCS2 format Unicode string.

The reference count of this value will be set to 1, and caller needs to cleanup the value by calling JsonValueFree().

More details for reference count strategy can refer to the API description for JsonValueFree().

Parameters
[in]StringThe Unicode string to initialize to JSON value
Return values
Thecreated JSON value which contains a JSON string or NULL. Select a Getter API for a specific encoding format.
BOOLEAN EFIAPI JsonValueIsArray ( IN EDKII_JSON_VALUE  Json)

The function is used to return if the provided JSON value contains a JSON array.

Parameters
[in]JsonThe provided JSON value.
Return values
TRUEThe JSON value contains a JSON array.
FALSEThe JSON value doesn't contain a JSON array.
BOOLEAN EFIAPI JsonValueIsBoolean ( IN EDKII_JSON_VALUE  Json)

The function is used to return if the provided JSON value contains a JSON boolean.

Parameters
[in]JsonThe provided JSON value.
Return values
TRUEThe JSON value contains a JSON boolean.
FALSEThe JSON value doesn't contain a JSON boolean.
BOOLEAN EFIAPI JsonValueIsFalse ( IN EDKII_JSON_VALUE  Json)

The function is used to return if the provided JSON value contains a FALSE value.

Parameters
[in]JsonThe provided JSON value.
Return values
TRUEThe JSON value contains a FALSE value.
FALSEThe JSON value doesn't contain a FALSE value.
BOOLEAN EFIAPI JsonValueIsInteger ( IN EDKII_JSON_VALUE  Json)

The function is used to return if the provided JSON value contains a JSON integer.

Parameters
[in]JsonThe provided JSON value.
Return values
TRUEThe JSON value is contains JSON integer.
FALSEThe JSON value doesn't contain a JSON integer.
BOOLEAN EFIAPI JsonValueIsNull ( IN EDKII_JSON_VALUE  Json)

The function is used to return if the provided JSON value contains a JSON NULL.

Parameters
[in]JsonThe provided JSON value.
Return values
TRUEThe JSON value contains a JSON NULL.
FALSEThe JSON value doesn't contain a JSON NULL.
BOOLEAN EFIAPI JsonValueIsNumber ( IN EDKII_JSON_VALUE  Json)

The function is used to return if the provided JSON value contains a JSON number.

Parameters
[in]JsonThe provided JSON value.
Return values
TRUEThe JSON value is contains JSON number.
FALSEThe JSON value doesn't contain a JSON number.
BOOLEAN EFIAPI JsonValueIsObject ( IN EDKII_JSON_VALUE  Json)

The function is used to return if the provided JSON value contains a JSON object.

Parameters
[in]JsonThe provided JSON value.
Return values
TRUEThe JSON value contains a JSON object.
FALSEThe JSON value doesn't contain a JSON object.
BOOLEAN EFIAPI JsonValueIsString ( IN EDKII_JSON_VALUE  Json)

The function is used to return if the provided JSON Value contains a string, Ascii or Unicode format is not differentiated.

Parameters
[in]JsonThe provided JSON value.
Return values
TRUEThe JSON value contains a JSON string.
FALSEThe JSON value doesn't contain a JSON string.
BOOLEAN EFIAPI JsonValueIsTrue ( IN EDKII_JSON_VALUE  Json)

The function is used to return if the provided JSON value contains a TRUE value.

Parameters
[in]JsonThe provided JSON value.
Return values
TRUEThe JSON value contains a TRUE value.
FALSEThe JSON value doesn't contain a TRUE value.