¶Ô±ÈÐÂÎļþ |
| | |
| | | /******************************************************************************* |
| | | * File Name : HIDO_Json.h |
| | | * Description : |
| | | * Created on : 2019å¹´5æ12æ¥ |
| | | * Author : www.hido-studio.com |
| | | *******************************************************************************/ |
| | | #ifndef HIDO_JSON_H_ |
| | | #define HIDO_JSON_H_ |
| | | |
| | | /******************************************************************************* |
| | | * Include Files * |
| | | *******************************************************************************/ |
| | | #include "HIDO_TypeDef.h" |
| | | |
| | | /******************************************************************************* |
| | | * Macro * |
| | | *******************************************************************************/ |
| | | #define MAX_JSON_STRING_LEN 1500 |
| | | #define MAX_JSON_NODE_CNT 50 |
| | | #define MAX_JSON_ARRARY_NODE_CNT 10 |
| | | |
| | | /******************************************************************************* |
| | | * Type Definition * |
| | | *******************************************************************************/ |
| | | typedef enum |
| | | { |
| | | HIDO_JSON_STATE_IDLE = 0, |
| | | HIDO_JSON_STATE_BEGIN, |
| | | HIDO_JSON_STATE_END, |
| | | HIDO_JSON_STATE_KEY_BEGIN, |
| | | HIDO_JSON_STATE_KEY_END, |
| | | HIDO_JSON_STATE_VALUE_BEGIN, |
| | | HIDO_JSON_STATE_VALUE_END, |
| | | HIDO_JSON_STATE_VALUE_ARRARY_BEGIN, |
| | | HIDO_JSON_STATE_VALUE_ARRARY_END, |
| | | HIDO_JSON_STATE_VALUE_STRING_BEGIN, |
| | | HIDO_JSON_STATE_VALUE_STRING_END, |
| | | HIDO_JSON_STATE_VALUE_INTEGER_BEGIN, |
| | | HIDO_JSON_STATE_VALUE_INTEGER_END, |
| | | HIDO_JSON_STATE_VALUE_DOUBLE_BEGIN, |
| | | HIDO_JSON_STATE_VALUE_DOUBLE_END, |
| | | HIDO_JSON_STATE_VALUE_JSON_BEGIN, |
| | | HIDO_JSON_STATE_VALUE_JSON_END, |
| | | HIDO_JSON_STATE_VALUE_NULL_BEGIN, |
| | | HIDO_JSON_STATE_VALUE_NULL_END, |
| | | |
| | | HIDO_JSON_STATE_LAST, |
| | | }HIDO_JsonStateEnum; |
| | | |
| | | typedef enum |
| | | { |
| | | HIDO_JSON_TYPE_NULL, |
| | | HIDO_JSON_TYPE_INTEGER, |
| | | HIDO_JSON_TYPE_DOUBLE, |
| | | HIDO_JSON_TYPE_ARRARY, |
| | | HIDO_JSON_TYPE_STRING, |
| | | HIDO_JSON_TYPE_JSON, |
| | | }HIDO_JsonTypeEnum; |
| | | |
| | | typedef struct JsonNodeStruct |
| | | { |
| | | HIDO_UINT32 m_u32Len; |
| | | HIDO_CHAR *m_pcPtr; |
| | | }HIDO_JsonDptr; |
| | | |
| | | struct HIDO_JsonNode; |
| | | typedef struct HIDO_JsonNode |
| | | { |
| | | HIDO_JsonTypeEnum m_eType; |
| | | HIDO_JsonDptr m_stKey; |
| | | HIDO_JsonDptr m_stValue; |
| | | HIDO_CHAR *m_pcEnd; |
| | | struct HIDO_JsonNode *m_pstNext; |
| | | }HIDO_JsonNodeStruct; |
| | | |
| | | struct HIDO_JsonArraryNode; |
| | | typedef struct HIDO_JsonArraryNode |
| | | { |
| | | HIDO_JsonNodeStruct *m_pstJson; |
| | | struct HIDO_JsonArraryNode *m_pstNext; |
| | | }HIDO_JsonArraryNodeStruct; |
| | | |
| | | typedef struct HIDO_Json |
| | | { |
| | | HIDO_CHAR *m_pcJson; |
| | | HIDO_UINT32 m_u32Len; |
| | | HIDO_UINT32 m_u32RemainingSize; |
| | | }HIDO_JsonStruct; |
| | | |
| | | typedef struct JsonArrayStruct |
| | | { |
| | | HIDO_CHAR *m_pcArray; |
| | | HIDO_UINT32 m_u32Len; |
| | | HIDO_UINT32 m_u32RemainingSize; |
| | | }HIDO_JsonArrayStruct; |
| | | |
| | | typedef struct |
| | | { |
| | | HIDO_UINT32 m_u32Hash; |
| | | const HIDO_CHAR *m_pcString; |
| | | HIDO_JsonNodeStruct *m_pstJson; |
| | | }HIDO_JsonKeyStruct; |
| | | |
| | | /******************************************************************************* |
| | | * Global Function * |
| | | *******************************************************************************/ |
| | | HIDO_VOID HIDO_JsonInit(void); |
| | | HIDO_VOID HIDO_JsonTest(void); |
| | | HIDO_VOID HIDO_JsonNodeFree(HIDO_JsonNodeStruct *_pstJsonNode); |
| | | HIDO_VOID HIDO_JsonArrayNodeFree(HIDO_JsonArraryNodeStruct *_pstJsonArraryNode); |
| | | HIDO_JsonNodeStruct *HIDO_JsonJsonParse(HIDO_CHAR *_pcJsonString); |
| | | HIDO_JsonNodeStruct *HIDO_JsonGetValue(HIDO_JsonNodeStruct *_pstJsonNodeList, HIDO_CHAR *_pcKey); |
| | | HIDO_INT32 HIDO_JsonGetInteger(HIDO_JsonNodeStruct *_pstJsonNodeList, HIDO_CHAR *_pcKey, HIDO_INT32 *_pi32Value); |
| | | HIDO_INT32 HIDO_JsonGetFloat(HIDO_JsonNodeStruct *_pstJsonNodeList, HIDO_CHAR *_pcKey, HIDO_FLOAT *_pfValue); |
| | | HIDO_INT32 HIDO_JsonGetDouble(HIDO_JsonNodeStruct *_pstJsonNodeList, HIDO_CHAR *_pcKey, HIDO_DOUBLE *_pdValue); |
| | | HIDO_INT32 HIDO_JsonGetString(HIDO_JsonNodeStruct *_pstJsonNodeList, HIDO_CHAR *_pcKey, HIDO_CHAR **_ppcValue); |
| | | HIDO_INT32 HIDO_JsonGetJson(HIDO_JsonNodeStruct *_pstJsonNodeList, HIDO_CHAR *_pcKey, HIDO_CHAR **_ppcValue); |
| | | HIDO_INT32 HIDO_JsonGetJsonArrary(HIDO_JsonNodeStruct *_pstJsonNodeList, HIDO_CHAR *_pcKey, HIDO_JsonArraryNodeStruct **_ppstValue); |
| | | HIDO_INT32 HIDO_JsonJsonInit(HIDO_JsonStruct *_pstJsonString, HIDO_CHAR *_pcJsonStringBuf, HIDO_UINT32 _u32JsonStringBufSize); |
| | | HIDO_INT32 HIDO_JsonAddInteger(HIDO_JsonStruct *_pstJsonString, HIDO_CHAR *_pcKey, HIDO_INT32 _i32Value); |
| | | HIDO_INT32 HIDO_JsonAddString(HIDO_JsonStruct *_pstJson, const HIDO_CHAR *_pcKey, const HIDO_CHAR *_pcValue); |
| | | HIDO_INT32 HIDO_JsonAddObject(HIDO_JsonStruct *_pstJsonString, HIDO_CHAR *_pcKey, HIDO_CHAR *_pcValue); |
| | | HIDO_INT32 HIDO_JsonAddArraryBegin(HIDO_JsonStruct *_pstJson, HIDO_CHAR *_pcKey, HIDO_JsonArrayStruct *_pstJsonArrry); |
| | | HIDO_INT32 HIDO_JsonAddArraryEnd(HIDO_JsonStruct *_pstJson, HIDO_JsonArrayStruct *_pstJsonArrry); |
| | | HIDO_INT32 HIDO_JsonAddJsonBegin(HIDO_JsonStruct *_pstJsonString, HIDO_CHAR *_pcKey, HIDO_JsonStruct *_pstSubJsonString); |
| | | HIDO_INT32 HIDO_JsonAddJsonEnd(HIDO_JsonStruct *_pstJsonString, HIDO_JsonStruct *_pstSubJsonString); |
| | | HIDO_INT32 HIDO_JsonAddIntegerArrary(HIDO_JsonStruct *_pstJsonString, HIDO_CHAR *_pcKey, HIDO_INT32 *_pi32Value, HIDO_UINT32 _u32ArraryCnt); |
| | | HIDO_INT32 HIDO_JsonAddStringArrary(HIDO_JsonStruct *_pstJsonString, HIDO_CHAR *_pcKey, HIDO_CHAR **_ppcValue, HIDO_UINT32 _u32ArraryCnt); |
| | | HIDO_INT32 HIDO_JsonAddObjectArrary(HIDO_JsonStruct *_pstJsonString, HIDO_CHAR *_pcKey, HIDO_CHAR **_ppcValue, HIDO_UINT32 _u32ArraryCnt); |
| | | HIDO_INT32 HIDO_JsonGetIntegerArrary(HIDO_JsonNodeStruct *_pstJsonNodeList, HIDO_CHAR *_pcKey, HIDO_INT32 *_pi32Value, HIDO_UINT32 *_pu32ValueCnt); |
| | | |
| | | #endif /* HIDO_JSON_H_ */ |