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.
5 #include "base/json/json_string_value_serializer.h"
7 #include "base/json/json_reader.h"
8 #include "base/json/json_writer.h"
9 #include "base/logging.h"
13 JSONStringValueSerializer::JSONStringValueSerializer(std::string
* json_string
)
14 : json_string_(json_string
),
15 pretty_print_(false) {
18 JSONStringValueSerializer::~JSONStringValueSerializer() {}
20 bool JSONStringValueSerializer::Serialize(const Value
& root
) {
21 return SerializeInternal(root
, false);
24 bool JSONStringValueSerializer::SerializeAndOmitBinaryValues(
26 return SerializeInternal(root
, true);
29 bool JSONStringValueSerializer::SerializeInternal(const Value
& root
,
30 bool omit_binary_values
) {
35 if (omit_binary_values
)
36 options
|= base::JSONWriter::OPTIONS_OMIT_BINARY_VALUES
;
38 options
|= base::JSONWriter::OPTIONS_PRETTY_PRINT
;
40 return base::JSONWriter::WriteWithOptions(root
, options
, json_string_
);
43 JSONStringValueDeserializer::JSONStringValueDeserializer(
44 const base::StringPiece
& json_string
)
45 : json_string_(json_string
),
46 allow_trailing_comma_(false) {
49 JSONStringValueDeserializer::~JSONStringValueDeserializer() {}
51 Value
* JSONStringValueDeserializer::Deserialize(int* error_code
,
52 std::string
* error_str
) {
53 return base::JSONReader::DeprecatedReadAndReturnError(
54 json_string_
, allow_trailing_comma_
? base::JSON_ALLOW_TRAILING_COMMAS
55 : base::JSON_PARSE_RFC
,
56 error_code
, error_str
);