1 // Copyright 2021 the V8 project authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef INCLUDE_V8_JSON_H_ 6 #define INCLUDE_V8_JSON_H_ 7 8 #include "v8-local-handle.h" // NOLINT(build/include_directory) 9 #include "v8config.h" // NOLINT(build/include_directory) 10 11 namespace v8 { 12 13 class Context; 14 class Value; 15 class String; 16 17 /** 18 * A JSON Parser and Stringifier. 19 */ 20 class V8_EXPORT JSON { 21 public: 22 /** 23 * Tries to parse the string |json_string| and returns it as value if 24 * successful. 25 * 26 * \param the context in which to parse and create the value. 27 * \param json_string The string to parse. 28 * \return The corresponding value if successfully parsed. 29 */ 30 static V8_WARN_UNUSED_RESULT MaybeLocal<Value> Parse( 31 Local<Context> context, Local<String> json_string); 32 33 /** 34 * Tries to stringify the JSON-serializable object |json_object| and returns 35 * it as string if successful. 36 * 37 * \param json_object The JSON-serializable object to stringify. 38 * \return The corresponding string if successfully stringified. 39 */ 40 static V8_WARN_UNUSED_RESULT MaybeLocal<String> Stringify( 41 Local<Context> context, Local<Value> json_object, 42 Local<String> gap = Local<String>()); 43 }; 44 45 } // namespace v8 46 47 #endif // INCLUDE_V8_JSON_H_ 48