summaryrefslogtreecommitdiffstats
path: root/chromecast/base/serializers.cc
diff options
context:
space:
mode:
authorslan <slan@chromium.org>2015-04-21 17:46:37 -0700
committerCommit bot <commit-bot@chromium.org>2015-04-22 00:47:40 +0000
commit5cacb5a8c68adf4614eb6448d673eb69f6a5bb27 (patch)
treef7bde0501e3e8ace0c695355306ed428c348a286 /chromecast/base/serializers.cc
parentb8cf017a1764eaa72076ac052dac56368460db9d (diff)
downloadchromium_src-5cacb5a8c68adf4614eb6448d673eb69f6a5bb27.zip
chromium_src-5cacb5a8c68adf4614eb6448d673eb69f6a5bb27.tar.gz
chromium_src-5cacb5a8c68adf4614eb6448d673eb69f6a5bb27.tar.bz2
Adds JSON serialization helper functions to chromecast/base.
Includes implementations and unittests for Serialize() and Deserialize(). BUG= internal b/20121400 Review URL: https://codereview.chromium.org/1098743003 Cr-Commit-Position: refs/heads/master@{#326195}
Diffstat (limited to 'chromecast/base/serializers.cc')
-rw-r--r--chromecast/base/serializers.cc33
1 files changed, 33 insertions, 0 deletions
diff --git a/chromecast/base/serializers.cc b/chromecast/base/serializers.cc
new file mode 100644
index 0000000..366a5d2
--- /dev/null
+++ b/chromecast/base/serializers.cc
@@ -0,0 +1,33 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chromecast/base/serializers.h"
+
+#include "base/json/json_string_value_serializer.h"
+#include "base/logging.h"
+
+namespace chromecast {
+
+scoped_ptr<base::Value> DeserializeFromJson(const std::string& text) {
+ JSONStringValueDeserializer deserializer(text);
+
+ int error_code;
+ std::string error_msg;
+ scoped_ptr<base::Value> value(
+ deserializer.Deserialize(&error_code, &error_msg));
+ DLOG_IF(ERROR, !value) << "JSON error " << error_code << ":" << error_msg;
+
+ // Value will hold the nullptr in case of an error.
+ return value.Pass();
+}
+
+scoped_ptr<std::string> SerializeToJson(const base::Value& value) {
+ scoped_ptr<std::string> json_str(new std::string());
+ JSONStringValueSerializer serializer(json_str.get());
+ if (!serializer.Serialize(value))
+ json_str.reset(nullptr);
+ return json_str.Pass();
+}
+
+} // namespace chromecast