diff --git a/buffet/commands/command_manager_unittest.cc b/buffet/commands/command_manager_unittest.cc
index f270655..81c2a5b 100644
--- a/buffet/commands/command_manager_unittest.cc
+++ b/buffet/commands/command_manager_unittest.cc
@@ -56,7 +56,7 @@
 static void SaveJsonToFile(const base::DictionaryValue& dict,
                            const base::FilePath& file_path) {
   std::string json;
-  base::JSONWriter::Write(&dict, &json);
+  base::JSONWriter::Write(dict, &json);
   const int bytes_to_write = static_cast<int>(json.size());
   CHECK_EQ(bytes_to_write, WriteFile(file_path, json.data(), bytes_to_write));
 }
diff --git a/buffet/commands/prop_constraints.cc b/buffet/commands/prop_constraints.cc
index f773290..1fd43e6 100644
--- a/buffet/commands/prop_constraints.cc
+++ b/buffet/commands/prop_constraints.cc
@@ -19,7 +19,7 @@
   std::string result;
   auto json = value.ToJson(nullptr);
   if (json)
-    base::JSONWriter::Write(json.get(), &result);
+    base::JSONWriter::Write(*json, &result);
   return result;
 }
 
diff --git a/buffet/commands/schema_utils.cc b/buffet/commands/schema_utils.cc
index 47b757f..efb758e 100644
--- a/buffet/commands/schema_utils.cc
+++ b/buffet/commands/schema_utils.cc
@@ -21,7 +21,7 @@
                             const std::string& expected_type,
                             chromeos::ErrorPtr* error) {
   std::string value_as_string;
-  base::JSONWriter::Write(value_in, &value_as_string);
+  base::JSONWriter::Write(*value_in, &value_as_string);
   chromeos::Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain,
                                errors::commands::kTypeMismatch,
                                "Unable to convert value %s into %s",
@@ -255,14 +255,14 @@
 std::string ToString(const native_types::Object& obj) {
   auto val = TypedValueToJson(obj, nullptr);
   std::string str;
-  base::JSONWriter::Write(val.get(), &str);
+  base::JSONWriter::Write(*val, &str);
   return str;
 }
 
 std::string ToString(const native_types::Array& arr) {
   auto val = TypedValueToJson(arr, nullptr);
   std::string str;
-  base::JSONWriter::Write(val.get(), &str);
+  base::JSONWriter::Write(*val, &str);
   return str;
 }
 
diff --git a/buffet/commands/unittest_utils.cc b/buffet/commands/unittest_utils.cc
index be4d4e7..df07289 100644
--- a/buffet/commands/unittest_utils.cc
+++ b/buffet/commands/unittest_utils.cc
@@ -16,8 +16,10 @@
   std::replace(json2.begin(), json2.end(), '\'', '"');
   int error = 0;
   std::string message;
-  std::unique_ptr<base::Value> value{base::JSONReader::ReadAndReturnError(
-      json2, base::JSON_PARSE_RFC, &error, &message)};
+  std::unique_ptr<base::Value> value{
+      base::JSONReader::ReadAndReturnError(json2, base::JSON_PARSE_RFC, &error,
+                                           &message)
+          .release()};
   CHECK(value) << "Failed to load JSON: " << message << ", " << json;
   return value;
 }
