| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- #ifndef __JSON_H__
- #define __JSON_H__
- #define JSON_INDENT 1
- #define JSON_INDENT_CHAR "\t"
- enum JSON_WORD_TYPE
- {
- JWT_STRING,
- JWT_OTHER,
- JWT_NONE
- };
- enum JSON_NODE_TYPE
- {
- // node = key: [node]
- JNT_NODE,
- // node = key: [ array ]
- JNT_ARRAY,
- // node = key: value
- JNT_VALUE,
- // node = key: "value"
- JNT_QUOTED_VALUE
- };
- enum JSON_SET_FLAGS
- {
- JSF_NONE = 0,
- JSF_IS_FILE = 1,
- JSF_IS_UNICODE = 2,
- JSF_IS_RAW = 4
- };
- enum JSON_ESCAPE_FLAGS
- {
- JEF_NONE = 0,
- JEF_ESCAPE_UNICODE = 1,
- JEF_QUOTE = 2,
- JEF_ALWAYS_QUOTE = 4
- };
- struct JSON_NODE
- {
- enum JSON_NODE_TYPE eType;
- struct JSON_NODE* pNext;
- PTCHAR pszKey;
- union
- {
- PTCHAR pszValue;
- struct JSON_NODE* pValue;
- };
- };
- enum JSON_SORT_FLAGS
- {
- // Sort descending instead of ascending.
- JSF_DESCENDING = 1,
- // Numeric comparison rather than string.
- JSF_NUMERIC = 2,
- // Sort case sensitive.
- JSF_CASE_SENSITIVE = 4,
- // Sort by keys rather than by values.
- JSF_BY_KEYS = 8,
- // Sort recursively.
- JSF_RECURSIVE = 16
- };
- struct JSON_NODE* JSON_Create();
- BOOL JSON_IsTrue(struct JSON_NODE* pNode);
- PTCHAR JSON_GetQuotedValue(struct JSON_NODE* pNode, const PTCHAR pszDefaultValue);
- void JSON_Delete(struct JSON_NODE** ppNode, struct JSON_NODE* pPrev);
- int JSON_Count(struct JSON_NODE* pNode);
- struct JSON_NODE* JSON_Get(struct JSON_NODE* pNode, PTCHAR pszKey, BOOL bKeyIsIndex);
- struct JSON_NODE* JSON_GetEx(struct JSON_NODE* pNode, PTCHAR pszKey, BOOL bKeyIsIndex, BOOL bCreate, BOOL* pbCreated);
- struct JSON_NODE* JSON_Next(struct JSON_NODE** ppNode, PTCHAR pszKey, BOOL bKeyIsIndex, BOOL bCreate, BOOL* pbCreated);
- BOOL JSON_Set(struct JSON_NODE* pNode, PBYTE pbValue, enum JSON_SET_FLAGS eFlags);
- BOOL JSON_SetEx(struct JSON_NODE* pNode, PTCHAR pszKey, BOOL bKeyIsIndex, PBYTE pbValue, enum JSON_SET_FLAGS eFlags);
- BOOL JSON_Serialize(struct JSON_NODE* pNode, PTCHAR pszBuffer, int cchBuffer, BOOL bIsFile, BOOL bAsUnicode, BOOL bFormat);
- PTCHAR JSON_SerializeAlloc(struct JSON_NODE* pNode, BOOL bFormat, BOOL bAsPostData);
- PTCHAR JSON_Expand(struct JSON_NODE* pNode);
- PTCHAR JSON_Escape(PTCHAR pszValue, enum JSON_ESCAPE_FLAGS eFlags);
- PCHAR JSON_FromUnicode(PWCHAR pwszText, int* pcchText, UINT nCodePage);
- PWCHAR JSON_ToUnicode(PCHAR pszText, int* pcbText);
- void JSON_Sort(struct JSON_NODE* pNode, enum JSON_SORT_FLAGS eFlags);
- #endif
|