mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-26 07:04:28 +02:00
RedfishPkg/JsonLib: Add more JsonLib functions
Signed-off-by: Abner Chang <abner.chang@hpe.com> Cc: Nickle Wang <nickle.wang@hpe.com> Reviewed-by: Nickle Wang <nickle.wang@hpe.com>
This commit is contained in:
parent
d02dbb53cd
commit
a7ddc7847c
@ -2,7 +2,7 @@
|
|||||||
APIs for JSON operations.
|
APIs for JSON operations.
|
||||||
|
|
||||||
Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
|
||||||
(C) Copyright 2020 Hewlett Packard Enterprise Development LP<BR>
|
(C) Copyright 2021 Hewlett Packard Enterprise Development LP<BR>
|
||||||
|
|
||||||
SPDX-License-Identifier: BSD-2-Clause-Patent
|
SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||||
|
|
||||||
@ -53,6 +53,13 @@ typedef INT64 EDKII_JSON_INT_T; // #JSON_INTEGER_IS_LONG_LONG is set to 1
|
|||||||
Index < JsonArrayCount(Array) && (Value = JsonArrayGetValue(Array, Index)); \
|
Index < JsonArrayCount(Array) && (Value = JsonArrayGetValue(Array, Index)); \
|
||||||
Index++)
|
Index++)
|
||||||
|
|
||||||
|
#define EDKII_JSON_OBJECT_FOREACH_SAFE(Object, N, Key, Value) \
|
||||||
|
for (Key = JsonObjectIteratorKey(JsonObjectIterator(Object)), \
|
||||||
|
N = JsonObjectIteratorNext(Object, JsonObjectKeyToIterator(Key)); \
|
||||||
|
Key && (Value = JsonObjectIteratorValue(JsonObjectKeyToIterator(Key))); \
|
||||||
|
Key = JsonObjectIteratorKey(N), \
|
||||||
|
N = JsonObjectIteratorNext(Object, JsonObjectKeyToIterator(Key)))
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Map to the json_error_t in jansson.h
|
/// Map to the json_error_t in jansson.h
|
||||||
///
|
///
|
||||||
@ -177,12 +184,12 @@ JsonValueInitUnicodeString (
|
|||||||
|
|
||||||
@param[in] Value The integer to initialize to JSON value
|
@param[in] Value The integer to initialize to JSON value
|
||||||
|
|
||||||
@retval The created JSON value which contains a JSON number or NULL.
|
@retval The created JSON value which contains a JSON integer or NULL.
|
||||||
|
|
||||||
**/
|
**/
|
||||||
EDKII_JSON_VALUE
|
EDKII_JSON_VALUE
|
||||||
EFIAPI
|
EFIAPI
|
||||||
JsonValueInitNumber (
|
JsonValueInitInteger (
|
||||||
IN INT64 Value
|
IN INT64 Value
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -218,6 +225,36 @@ JsonValueInitNull (
|
|||||||
VOID
|
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.
|
||||||
|
|
||||||
|
@retval The created JSON TRUE value.
|
||||||
|
|
||||||
|
**/
|
||||||
|
EDKII_JSON_VALUE
|
||||||
|
EFIAPI
|
||||||
|
JsonValueInitTrue (
|
||||||
|
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.
|
||||||
|
|
||||||
|
@retval The created JSON FALSE value.
|
||||||
|
|
||||||
|
**/
|
||||||
|
EDKII_JSON_VALUE
|
||||||
|
EFIAPI
|
||||||
|
JsonValueInitFalse (
|
||||||
|
VOID
|
||||||
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
The function is used to decrease the reference count of a JSON value by one, and once
|
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.
|
this reference count drops to zero, the value is destroyed and it can no longer be used.
|
||||||
@ -313,6 +350,21 @@ JsonValueIsString (
|
|||||||
IN EDKII_JSON_VALUE Json
|
IN EDKII_JSON_VALUE Json
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
The function is used to return if the provided JSON value contains a JSON integer.
|
||||||
|
|
||||||
|
@param[in] Json The provided JSON value.
|
||||||
|
|
||||||
|
@retval TRUE The JSON value is contains JSON integer.
|
||||||
|
@retval FALSE The JSON value doesn't contain a JSON integer.
|
||||||
|
|
||||||
|
**/
|
||||||
|
BOOLEAN
|
||||||
|
EFIAPI
|
||||||
|
JsonValueIsInteger (
|
||||||
|
IN EDKII_JSON_VALUE Json
|
||||||
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
The function is used to return if the provided JSON value contains a JSON number.
|
The function is used to return if the provided JSON value contains a JSON number.
|
||||||
|
|
||||||
@ -343,6 +395,36 @@ JsonValueIsBoolean (
|
|||||||
IN EDKII_JSON_VALUE Json
|
IN EDKII_JSON_VALUE Json
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
The function is used to return if the provided JSON value contains a TRUE value.
|
||||||
|
|
||||||
|
@param[in] Json The provided JSON value.
|
||||||
|
|
||||||
|
@retval TRUE The JSON value contains a TRUE value.
|
||||||
|
@retval FALSE The JSON value doesn't contain a TRUE value.
|
||||||
|
|
||||||
|
**/
|
||||||
|
BOOLEAN
|
||||||
|
EFIAPI
|
||||||
|
JsonValueIsTrue (
|
||||||
|
IN EDKII_JSON_VALUE Json
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
The function is used to return if the provided JSON value contains a FALSE value.
|
||||||
|
|
||||||
|
@param[in] Json The provided JSON value.
|
||||||
|
|
||||||
|
@retval TRUE The JSON value contains a FALSE value.
|
||||||
|
@retval FALSE The JSON value doesn't contain a FALSE value.
|
||||||
|
|
||||||
|
**/
|
||||||
|
BOOLEAN
|
||||||
|
EFIAPI
|
||||||
|
JsonValueIsFalse (
|
||||||
|
IN EDKII_JSON_VALUE Json
|
||||||
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
The function is used to return if the provided JSON value contains a JSON NULL.
|
The function is used to return if the provided JSON value contains a JSON NULL.
|
||||||
|
|
||||||
@ -424,19 +506,19 @@ JsonValueGetUnicodeString (
|
|||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
The function is used to retrieve the associated integer in a number type JSON value.
|
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 number, otherwise it will
|
The input JSON value should not be NULL or contain no JSON Integer, otherwise it will
|
||||||
ASSERT() and return 0.
|
ASSERT() and return 0.
|
||||||
|
|
||||||
@param[in] Json The provided JSON value.
|
@param[in] Json The provided JSON value.
|
||||||
|
|
||||||
@retval Return the associated number in JSON value.
|
@retval Return the associated Integer in JSON value.
|
||||||
|
|
||||||
**/
|
**/
|
||||||
INT64
|
INT64
|
||||||
EFIAPI
|
EFIAPI
|
||||||
JsonValueGetNumber (
|
JsonValueGetInteger (
|
||||||
IN EDKII_JSON_VALUE Json
|
IN EDKII_JSON_VALUE Json
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -675,6 +757,8 @@ JsonDumpString (
|
|||||||
Caller needs to cleanup the root value by calling JsonValueFree().
|
Caller needs to cleanup the root value by calling JsonValueFree().
|
||||||
|
|
||||||
@param[in] String The NULL terminated CHAR8 string to convert.
|
@param[in] String The NULL terminated CHAR8 string to convert.
|
||||||
|
@param[in] Flags Flags for loading JSON string.
|
||||||
|
@param[in] Error Returned error status.
|
||||||
|
|
||||||
@retval Array JSON value or object JSON value, or NULL when any error occurs.
|
@retval Array JSON value or object JSON value, or NULL when any error occurs.
|
||||||
|
|
||||||
@ -682,7 +766,9 @@ JsonDumpString (
|
|||||||
EDKII_JSON_VALUE
|
EDKII_JSON_VALUE
|
||||||
EFIAPI
|
EFIAPI
|
||||||
JsonLoadString (
|
JsonLoadString (
|
||||||
IN CONST CHAR8* String
|
IN CONST CHAR8* String,
|
||||||
|
IN UINT64 Flags,
|
||||||
|
IN EDKII_JSON_ERROR *Error
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -781,11 +867,36 @@ JsonObjectIteratorValue (
|
|||||||
@retval Iterator pointer
|
@retval Iterator pointer
|
||||||
**/
|
**/
|
||||||
VOID *
|
VOID *
|
||||||
|
EFIAPI
|
||||||
JsonObjectIteratorNext (
|
JsonObjectIteratorNext (
|
||||||
IN EDKII_JSON_VALUE JsonValue,
|
IN EDKII_JSON_VALUE JsonValue,
|
||||||
IN VOID *Iterator
|
IN VOID *Iterator
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Returns the key of iterator pointing
|
||||||
|
|
||||||
|
@param[in] Iterator Iterator pointer
|
||||||
|
@retval Key
|
||||||
|
**/
|
||||||
|
CHAR8 *
|
||||||
|
EFIAPI
|
||||||
|
JsonObjectIteratorKey (
|
||||||
|
IN VOID *Iterator
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Returns the pointer of iterator by key.
|
||||||
|
|
||||||
|
@param[in] Key The key of interator pointer.
|
||||||
|
@retval Pointer to interator
|
||||||
|
**/
|
||||||
|
VOID *
|
||||||
|
EFIAPI
|
||||||
|
JsonObjectKeyToIterator (
|
||||||
|
IN CHAR8 *Key
|
||||||
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Returns the json type of this json value
|
Returns the json type of this json value
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
https://jansson.readthedocs.io/en/2.13/apiref.html
|
https://jansson.readthedocs.io/en/2.13/apiref.html
|
||||||
|
|
||||||
Copyright (c) 2018 - 2019, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2018 - 2019, Intel Corporation. All rights reserved.<BR>
|
||||||
(C) Copyright 2020 Hewlett Packard Enterprise Development LP<BR>
|
(C) Copyright 2021 Hewlett Packard Enterprise Development LP<BR>
|
||||||
|
|
||||||
SPDX-License-Identifier: BSD-2-Clause-Patent
|
SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||||
**/
|
**/
|
||||||
@ -154,12 +154,12 @@ JsonValueInitUnicodeString (
|
|||||||
|
|
||||||
@param[in] Value The integer to initialize to JSON value
|
@param[in] Value The integer to initialize to JSON value
|
||||||
|
|
||||||
@retval The created JSON value which contains a JSON number or NULL.
|
@retval The created JSON value which contains a JSON integer or NULL.
|
||||||
|
|
||||||
**/
|
**/
|
||||||
EDKII_JSON_VALUE
|
EDKII_JSON_VALUE
|
||||||
EFIAPI
|
EFIAPI
|
||||||
JsonValueInitNumber (
|
JsonValueInitInteger (
|
||||||
IN INT64 Value
|
IN INT64 Value
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
@ -186,6 +186,42 @@ JsonValueInitBoolean (
|
|||||||
return (EDKII_JSON_VALUE)json_boolean (Value);
|
return (EDKII_JSON_VALUE)json_boolean (Value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
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.
|
||||||
|
|
||||||
|
@retval The created JSON TRUE value.
|
||||||
|
|
||||||
|
**/
|
||||||
|
EDKII_JSON_VALUE
|
||||||
|
EFIAPI
|
||||||
|
JsonValueInitTrue (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return (EDKII_JSON_VALUE)json_true();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
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.
|
||||||
|
|
||||||
|
@retval The created JSON FALSE value.
|
||||||
|
|
||||||
|
**/
|
||||||
|
EDKII_JSON_VALUE
|
||||||
|
EFIAPI
|
||||||
|
JsonValueInitFalse (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return (EDKII_JSON_VALUE)json_false();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
The function is used to initialize a JSON value which contains a new JSON NULL,
|
The function is used to initialize a JSON value which contains a new JSON NULL,
|
||||||
or NULL on error.
|
or NULL on error.
|
||||||
@ -314,6 +350,24 @@ JsonValueIsString (
|
|||||||
return json_is_string ((json_t *) Json);
|
return json_is_string ((json_t *) Json);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
The function is used to return if the provided JSON value contains a JSON integer.
|
||||||
|
|
||||||
|
@param[in] Json The provided JSON value.
|
||||||
|
|
||||||
|
@retval TRUE The JSON value is contains JSON integer.
|
||||||
|
@retval FALSE The JSON value doesn't contain a JSON integer.
|
||||||
|
|
||||||
|
**/
|
||||||
|
BOOLEAN
|
||||||
|
EFIAPI
|
||||||
|
JsonValueIsInteger (
|
||||||
|
IN EDKII_JSON_VALUE Json
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return json_is_integer ((json_t *) Json);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
The function is used to return if the provided JSON value contains a JSON number.
|
The function is used to return if the provided JSON value contains a JSON number.
|
||||||
|
|
||||||
@ -329,7 +383,7 @@ JsonValueIsNumber (
|
|||||||
IN EDKII_JSON_VALUE Json
|
IN EDKII_JSON_VALUE Json
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
return json_is_integer ((json_t *) Json);
|
return json_is_number ((json_t *) Json);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -350,6 +404,47 @@ JsonValueIsBoolean (
|
|||||||
return json_is_boolean ((json_t *) Json);
|
return json_is_boolean ((json_t *) Json);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
The function is used to return if the provided JSON value contains a TRUE value.
|
||||||
|
|
||||||
|
@param[in] Json The provided JSON value.
|
||||||
|
|
||||||
|
@retval TRUE The JSON value contains a TRUE value.
|
||||||
|
@retval FALSE The JSON value doesn't contain a TRUE value.
|
||||||
|
|
||||||
|
**/
|
||||||
|
BOOLEAN
|
||||||
|
EFIAPI
|
||||||
|
JsonValueIsTrue (
|
||||||
|
IN EDKII_JSON_VALUE Json
|
||||||
|
)
|
||||||
|
{
|
||||||
|
if (json_is_true ((json_t *)Json)) {
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
The function is used to return if the provided JSON value contains a FALSE value.
|
||||||
|
|
||||||
|
@param[in] Json The provided JSON value.
|
||||||
|
|
||||||
|
@retval TRUE The JSON value contains a FALSE value.
|
||||||
|
@retval FALSE The JSON value doesn't contain a FALSE value.
|
||||||
|
|
||||||
|
**/
|
||||||
|
BOOLEAN
|
||||||
|
EFIAPI
|
||||||
|
JsonValueIsFalse (
|
||||||
|
IN EDKII_JSON_VALUE Json
|
||||||
|
)
|
||||||
|
{
|
||||||
|
if (json_is_false ((json_t *)Json)) {
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
The function is used to return if the provided JSON value contains a JSON NULL.
|
The function is used to return if the provided JSON value contains a JSON NULL.
|
||||||
|
|
||||||
@ -485,24 +580,24 @@ JsonValueGetUnicodeString (
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
The function is used to retrieve the associated integer in a number type JSON value.
|
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 number, otherwise it will
|
The input JSON value should not be NULL or contain no JSON integer, otherwise it will
|
||||||
ASSERT() and return 0.
|
ASSERT() and return 0.
|
||||||
|
|
||||||
@param[in] Json The provided JSON value.
|
@param[in] Json The provided JSON value.
|
||||||
|
|
||||||
@retval Return the associated number in JSON value.
|
@retval Return the associated integer in JSON value.
|
||||||
|
|
||||||
**/
|
**/
|
||||||
INT64
|
INT64
|
||||||
EFIAPI
|
EFIAPI
|
||||||
JsonValueGetNumber (
|
JsonValueGetInteger (
|
||||||
IN EDKII_JSON_VALUE Json
|
IN EDKII_JSON_VALUE Json
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
ASSERT (Json != NULL && JsonValueIsNumber (Json));
|
ASSERT (Json != NULL && JsonValueIsInteger (Json));
|
||||||
if (Json == NULL || !JsonValueIsNumber (Json)) {
|
if (Json == NULL || !JsonValueIsInteger (Json)) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -830,6 +925,8 @@ JsonDumpString (
|
|||||||
Caller needs to cleanup the root value by calling JsonValueFree().
|
Caller needs to cleanup the root value by calling JsonValueFree().
|
||||||
|
|
||||||
@param[in] String The NULL terminated CHAR8 string to convert.
|
@param[in] String The NULL terminated CHAR8 string to convert.
|
||||||
|
@param[in] Flags Flags for loading JSON string.
|
||||||
|
@param[in] Error Returned error status.
|
||||||
|
|
||||||
@retval Array JSON value or object JSON value, or NULL when any error occurs.
|
@retval Array JSON value or object JSON value, or NULL when any error occurs.
|
||||||
|
|
||||||
@ -837,12 +934,12 @@ JsonDumpString (
|
|||||||
EDKII_JSON_VALUE
|
EDKII_JSON_VALUE
|
||||||
EFIAPI
|
EFIAPI
|
||||||
JsonLoadString (
|
JsonLoadString (
|
||||||
IN CONST CHAR8* String
|
IN CONST CHAR8* String,
|
||||||
|
IN UINT64 Flags,
|
||||||
|
IN EDKII_JSON_ERROR *Error
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
json_error_t JsonError;
|
return (EDKII_JSON_VALUE) json_loads ((const char *)String, Flags, (json_error_t *)Error);
|
||||||
|
|
||||||
return (EDKII_JSON_VALUE) json_loads ((const char *)String, 0, &JsonError);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -959,6 +1056,7 @@ JsonObjectIteratorValue (
|
|||||||
@retval Iterator pointer
|
@retval Iterator pointer
|
||||||
**/
|
**/
|
||||||
VOID *
|
VOID *
|
||||||
|
EFIAPI
|
||||||
JsonObjectIteratorNext (
|
JsonObjectIteratorNext (
|
||||||
IN EDKII_JSON_VALUE JsonValue,
|
IN EDKII_JSON_VALUE JsonValue,
|
||||||
IN VOID *Iterator
|
IN VOID *Iterator
|
||||||
@ -967,6 +1065,36 @@ JsonObjectIteratorNext (
|
|||||||
return json_object_iter_next(JsonValue, Iterator);
|
return json_object_iter_next(JsonValue, Iterator);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Returns the key of iterator pointing.
|
||||||
|
|
||||||
|
@param[in] Iterator Iterator pointer
|
||||||
|
@retval Key
|
||||||
|
**/
|
||||||
|
CHAR8 *
|
||||||
|
EFIAPI
|
||||||
|
JsonObjectIteratorKey (
|
||||||
|
IN VOID *Iterator
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return (CHAR8 *)json_object_iter_key(Iterator);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Returns the pointer of iterator by key.
|
||||||
|
|
||||||
|
@param[in] Key The key of interator pointer.
|
||||||
|
@retval Pointer to interator
|
||||||
|
**/
|
||||||
|
VOID *
|
||||||
|
EFIAPI
|
||||||
|
JsonObjectKeyToIterator (
|
||||||
|
IN CHAR8 *Key
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return json_object_key_to_iter(Key);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Returns the json type of this json value.
|
Returns the json type of this json value.
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user