11#include " json_parser.h"
22#include " debug_utils.h"
3+ #include < cstdio>
34
45namespace node {
56
@@ -12,20 +13,25 @@ bool JSONParser::Parse(const std::string& content) {
1213 size_t json_length = json_content_.size ();
1314 json_content_.append (simdjson::SIMDJSON_PADDING, ' ' );
1415
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 ());
1818
1919 simdjson::ondemand::document document;
2020 simdjson::error_code error = parser_.iterate(json_view).get (document);
2121
2222 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 ());
2326 return false ;
2427 }
2528
2629 simdjson::ondemand::object obj;
2730 error = document.get_object ().get (obj);
2831 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 ());
2935 return false ;
3036 }
3137
@@ -39,9 +45,10 @@ std::optional<std::string> JSONParser::GetTopLevelStringField(
3945 return {};
4046 }
4147
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 ());
4552
4653 simdjson::ondemand::document document;
4754 simdjson::error_code error = parser_.iterate(json_view).get (document);
@@ -69,9 +76,10 @@ std::optional<bool> JSONParser::GetTopLevelBoolField(std::string_view field) {
6976 return {};
7077 }
7178
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 ());
7583
7684 simdjson::ondemand::document document;
7785 simdjson::error_code error = parser_.iterate(json_view).get (document);
@@ -106,9 +114,10 @@ std::optional<JSONParser::StringDict> JSONParser::GetTopLevelStringDict(
106114 return std::nullopt ;
107115 }
108116
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 ());
112121
113122 simdjson::ondemand::document document;
114123 simdjson::error_code error = parser_.iterate(json_view).get (document);
0 commit comments