1 // Copyright (c) 2012 The Chromium 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 #include "base/json/json_string_value_serializer.h" 6 7 #include "base/json/json_reader.h" 8 #include "base/json/json_writer.h" 9 #include "base/logging.h" 10 11 using base::Value; 12 13 JSONStringValueSerializer::~JSONStringValueSerializer() {} 14 15 bool JSONStringValueSerializer::Serialize(const Value& root) { 16 return SerializeInternal(root, false); 17 } 18 19 bool JSONStringValueSerializer::SerializeAndOmitBinaryValues( 20 const Value& root) { 21 return SerializeInternal(root, true); 22 } 23 24 bool JSONStringValueSerializer::SerializeInternal(const Value& root, 25 bool omit_binary_values) { 26 if (!json_string_ || initialized_with_const_string_) 27 return false; 28 29 int options = 0; 30 if (omit_binary_values) 31 options |= base::JSONWriter::OPTIONS_OMIT_BINARY_VALUES; 32 if (pretty_print_) 33 options |= base::JSONWriter::OPTIONS_PRETTY_PRINT; 34 35 return base::JSONWriter::WriteWithOptions(&root, options, json_string_); 36 } 37 38 Value* JSONStringValueSerializer::Deserialize(int* error_code, 39 std::string* error_str) { 40 if (!json_string_) 41 return NULL; 42 43 return base::JSONReader::ReadAndReturnError(*json_string_, 44 allow_trailing_comma_ ? base::JSON_ALLOW_TRAILING_COMMAS : 45 base::JSON_PARSE_RFC, 46 error_code, error_str); 47 } 48