huangcm
2024-12-18 9d29be7f7249789d6ffd0440067187a9f040c2cd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
/*
 * JavaScript Object Notation (JSON) parser (RFC7159)
 * Copyright (c) 2017, Qualcomm Atheros, Inc.
 *
 * This software may be distributed under the terms of the BSD license.
 * See README for more details.
 */
 
#ifndef JSON_H
#define JSON_H
 
struct json_token {
   enum json_type {
       JSON_VALUE,
       JSON_OBJECT,
       JSON_ARRAY,
       JSON_STRING,
       JSON_NUMBER,
       JSON_BOOLEAN,
       JSON_NULL,
   } type;
   enum json_parsing_state {
       JSON_EMPTY,
       JSON_STARTED,
       JSON_WAITING_VALUE,
       JSON_COMPLETED,
   } state;
   char *name;
   char *string;
   int number;
   struct json_token *parent, *child, *sibling;
};
 
void json_escape_string(char *txt, size_t maxlen, const char *data, size_t len);
struct json_token * json_parse(const char *data, size_t data_len);
void json_free(struct json_token *json);
struct json_token * json_get_member(struct json_token *json, const char *name);
struct wpabuf * json_get_member_base64url(struct json_token *json,
                     const char *name);
void json_print_tree(struct json_token *root, char *buf, size_t buflen);
 
#endif /* JSON_H */