mirror of
https://github.com/php/php-src.git
synced 2025-08-18 15:08:55 +02:00
Update the JSON parser with that on json.org, biggest change here is code readability. Less magic numbers in the state table.
Add missing reflection information to json_encode() Fixes bug #45791 with 0e0 not being supported as a value Error values are stored when encountered during parsing
This commit is contained in:
parent
c7a56d604b
commit
cae85c867a
3 changed files with 636 additions and 599 deletions
|
@ -1,6 +1,24 @@
|
|||
/* JSON_checker.h */
|
||||
/* JSON_parser.h */
|
||||
|
||||
#ifndef JSON_PARSER_H
|
||||
#define JSON_PARSER_H
|
||||
|
||||
#include "php.h"
|
||||
#include "ext/standard/php_smart_str.h"
|
||||
|
||||
extern int JSON_parser(zval *z, unsigned short p[], int length, int assoc TSRMLS_DC);
|
||||
#define JSON_PARSER_MAX_DEPTH 512
|
||||
|
||||
typedef struct JSON_parser_struct {
|
||||
int state;
|
||||
int depth;
|
||||
int top;
|
||||
int error;
|
||||
int* stack;
|
||||
zval *the_zstack[JSON_PARSER_MAX_DEPTH];
|
||||
|
||||
} * JSON_parser;
|
||||
|
||||
extern JSON_parser new_JSON_parser(int depth);
|
||||
extern int parse_JSON(JSON_parser jp, zval *z, unsigned short utf16_json[], int length, int assoc TSRMLS_DC);
|
||||
extern int free_JSON_parser(JSON_parser jp);
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue