1
1
#include " json_parser.h"
2
2
#include " debug_utils.h"
3
+ #include < cstdio>
3
4
4
5
namespace node {
5
6
@@ -12,20 +13,25 @@ bool JSONParser::Parse(const std::string& content) {
12
13
size_t json_length = json_content_.size ();
13
14
json_content_.append (simdjson::SIMDJSON_PADDING, ' ' );
14
15
15
- simdjson::padded_string_view json_view (json_content_.data (),
16
- json_length,
17
- json_content_.size ());
16
+ simdjson::padded_string_view json_view (
17
+ json_content_.data (), json_length, json_content_.size ());
18
18
19
19
simdjson::ondemand::document document;
20
20
simdjson::error_code error = parser_.iterate(json_view).get (document);
21
21
22
22
if (error != simdjson::SUCCESS) {
23
+ error_message_ = simdjson::error_message (error);
24
+ // Print error to stderr to match V8 behavior
25
+ std::fprintf (stderr, " JSON Parse error: %s\n " , error_message_.c_str ());
23
26
return false ;
24
27
}
25
28
26
29
simdjson::ondemand::object obj;
27
30
error = document.get_object ().get (obj);
28
31
if (error != simdjson::SUCCESS) {
32
+ error_message_ = simdjson::error_message (error);
33
+ // Print error to stderr to match V8 behavior
34
+ std::fprintf (stderr, " JSON Parse error: %s\n " , error_message_.c_str ());
29
35
return false ;
30
36
}
31
37
@@ -39,9 +45,10 @@ std::optional<std::string> JSONParser::GetTopLevelStringField(
39
45
return {};
40
46
}
41
47
42
- simdjson::padded_string_view json_view (json_content_.data (),
43
- json_content_.size () - simdjson::SIMDJSON_PADDING,
44
- json_content_.size ());
48
+ simdjson::padded_string_view json_view (
49
+ json_content_.data (),
50
+ json_content_.size () - simdjson::SIMDJSON_PADDING,
51
+ json_content_.size ());
45
52
46
53
simdjson::ondemand::document document;
47
54
simdjson::error_code error = parser_.iterate(json_view).get (document);
@@ -69,9 +76,10 @@ std::optional<bool> JSONParser::GetTopLevelBoolField(std::string_view field) {
69
76
return {};
70
77
}
71
78
72
- simdjson::padded_string_view json_view (json_content_.data (),
73
- json_content_.size () - simdjson::SIMDJSON_PADDING,
74
- json_content_.size ());
79
+ simdjson::padded_string_view json_view (
80
+ json_content_.data (),
81
+ json_content_.size () - simdjson::SIMDJSON_PADDING,
82
+ json_content_.size ());
75
83
76
84
simdjson::ondemand::document document;
77
85
simdjson::error_code error = parser_.iterate(json_view).get (document);
@@ -106,9 +114,10 @@ std::optional<JSONParser::StringDict> JSONParser::GetTopLevelStringDict(
106
114
return std::nullopt;
107
115
}
108
116
109
- simdjson::padded_string_view json_view (json_content_.data (),
110
- json_content_.size () - simdjson::SIMDJSON_PADDING,
111
- json_content_.size ());
117
+ simdjson::padded_string_view json_view (
118
+ json_content_.data (),
119
+ json_content_.size () - simdjson::SIMDJSON_PADDING,
120
+ json_content_.size ());
112
121
113
122
simdjson::ondemand::document document;
114
123
simdjson::error_code error = parser_.iterate(json_view).get (document);
0 commit comments