diff --git a/core/includes/ajax.inc b/core/includes/ajax.inc
index de6f5d0..f793a7e 100644
--- a/core/includes/ajax.inc
+++ b/core/includes/ajax.inc
@@ -5,6 +5,7 @@
  * Functions for use with Drupal's Ajax framework.
  */
 
+use Drupal\Component\Utility\Json;
 use Symfony\Component\HttpKernel\Exception\BadRequestHttpException;
 
 /**
@@ -299,7 +300,7 @@ function ajax_render($commands = array()) {
   // Allow modules to alter any Ajax response.
   drupal_alter('ajax_render', $commands);
 
-  return drupal_json_encode($commands);
+  return Json::encode($commands);
 }
 
 /**
diff --git a/core/lib/Drupal/Component/Utility/Json.php b/core/lib/Drupal/Component/Utility/Json.php
index 54614b5..0715e13 100644
--- a/core/lib/Drupal/Component/Utility/Json.php
+++ b/core/lib/Drupal/Component/Utility/Json.php
@@ -39,9 +39,6 @@ public static function encode($variable) {
    *
    * @return mixed
    *   Returns the decoded string.
-   *
-   * @see drupal_json_encode()
-   * @ingroup php_wrappers
    */
   public static function decode($string) {
     return json_decode($string, TRUE);
diff --git a/core/lib/Drupal/Core/Asset/JsCollectionRenderer.php b/core/lib/Drupal/Core/Asset/JsCollectionRenderer.php
index 5f920d4..cdaf1d8 100644
--- a/core/lib/Drupal/Core/Asset/JsCollectionRenderer.php
+++ b/core/lib/Drupal/Core/Asset/JsCollectionRenderer.php
@@ -7,6 +7,7 @@
 namespace Drupal\Core\Asset;
 
 use Drupal\Core\KeyValueStore\StateInterface;
+use Drupal\Component\Utility\Json;
 
 /**
  * Renders JavaScript assets.
@@ -67,7 +68,7 @@ public function render(array $js_assets) {
       switch ($js_asset['type']) {
         case 'setting':
           $element['#value_prefix'] = $embed_prefix;
-          $element['#value'] = 'var drupalSettings = ' . drupal_json_encode(drupal_merge_js_settings($js_asset['data'])) . ";";
+          $element['#value'] = 'var drupalSettings = ' . Json::encode(drupal_merge_js_settings($js_asset['data'])) . ";";
           $element['#value_suffix'] = $embed_suffix;
           break;
 
diff --git a/core/modules/contextual/lib/Drupal/contextual/Plugin/views/field/ContextualLinks.php b/core/modules/contextual/lib/Drupal/contextual/Plugin/views/field/ContextualLinks.php
index 7a40df1..2f6004a 100644
--- a/core/modules/contextual/lib/Drupal/contextual/Plugin/views/field/ContextualLinks.php
+++ b/core/modules/contextual/lib/Drupal/contextual/Plugin/views/field/ContextualLinks.php
@@ -9,6 +9,7 @@
 
 use Drupal\views\Plugin\views\field\FieldPluginBase;
 use Drupal\views\ResultRow;
+use Drupal\Component\Utility\Json;
 
 /**
  * Provides a handler that adds contextual links.
@@ -114,7 +115,7 @@ public function render(ResultRow $values) {
           '',
           array(),
           array(
-            'contextual-views-field-links' => drupal_encode_path(drupal_json_encode($links)),
+            'contextual-views-field-links' => drupal_encode_path(Json::encode($links)),
           )
         )
       );
diff --git a/core/modules/editor/lib/Drupal/editor/Tests/EditIntegrationTest.php b/core/modules/editor/lib/Drupal/editor/Tests/EditIntegrationTest.php
index 9081290..939ef31 100644
--- a/core/modules/editor/lib/Drupal/editor/Tests/EditIntegrationTest.php
+++ b/core/modules/editor/lib/Drupal/editor/Tests/EditIntegrationTest.php
@@ -7,6 +7,7 @@
 
 namespace Drupal\editor\Tests;
 
+use Drupal\Component\Utility\Json;
 use Drupal\Core\Language\Language;
 use Drupal\edit\EditorSelector;
 use Drupal\edit\MetadataGenerator;
@@ -196,7 +197,7 @@ public function testGetUntransformedTextCommand() {
         'data' => 'Test',
       )
     );
-    $this->assertEqual(drupal_json_encode($expected), $response->prepare($request)->getContent(), 'The GetUntransformedTextCommand AJAX command works correctly.');
+    $this->assertEqual(Json::encode($expected), $response->prepare($request)->getContent(), 'The GetUntransformedTextCommand AJAX command works correctly.');
   }
 
 }
diff --git a/core/modules/locale/locale.module b/core/modules/locale/locale.module
index e9b539c..78ec490 100644
--- a/core/modules/locale/locale.module
+++ b/core/modules/locale/locale.module
@@ -10,6 +10,7 @@
  * object files are supported.
  */
 
+use Drupal\Component\Utility\Json;
 use Drupal\Core\Language\Language;
 use Drupal\Component\Utility\Crypt;
 
@@ -1325,7 +1326,7 @@ function _locale_rebuild_js($langcode = NULL) {
       $data .= "'pluralFormula': function (\$n) { return Number({$locale_plurals[$language->id]['formula']}); }, ";
     }
 
-    $data .= "'strings': " . drupal_json_encode($translations) . " };";
+    $data .= "'strings': " . Json::encode($translations) . " };";
     $data_hash = Crypt::hashBase64($data);
   }
 
diff --git a/core/modules/system/tests/modules/form_test/form_test.module b/core/modules/system/tests/modules/form_test/form_test.module
index a932868..7dcb68e 100644
--- a/core/modules/system/tests/modules/form_test/form_test.module
+++ b/core/modules/system/tests/modules/form_test/form_test.module
@@ -5,6 +5,7 @@
  * Helper module for the form API tests.
  */
 
+use Drupal\Component\Utility\Json;
 use Drupal\Core\Database\Connection;
 use Drupal\Core\Database\Database;
 use Drupal\Core\Language\Language;
@@ -798,7 +799,7 @@ function form_test_form_state_values_clean_form_submit($form, &$form_state) {
   form_state_values_clean($form_state);
   // This won't have a proper JSON header, but Drupal doesn't check for that
   // anyway so this is fine until it's replaced with a JsonResponse.
-  print drupal_json_encode($form_state['values']);
+  print Json::encode($form_state['values']);
   exit;
 }
 
diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/TermTest.php b/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/TermTest.php
index 410ff5a..2b58e0e 100644
--- a/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/TermTest.php
+++ b/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/TermTest.php
@@ -8,6 +8,7 @@
 namespace Drupal\taxonomy\Tests;
 
 use Drupal\Core\Field\FieldDefinitionInterface;
+use Drupal\Component\Utility\Json;
 
 /**
  * Tests for taxonomy term functions.
@@ -273,7 +274,7 @@ function testTermAutocompletion() {
       'value' => check_plain($first_term->label()),
       'label' => $first_term->label(),
     ));
-    $this->assertRaw(drupal_json_encode($target), 'Autocomplete returns only the expected matching term.');
+    $this->assertRaw(Json::encode($target), 'Autocomplete returns only the expected matching term.');
 
     // Try to autocomplete a term name with both a comma and a slash.
     $input = '"term with, comma and / a';
@@ -288,7 +289,7 @@ function testTermAutocompletion() {
       'value' => $n,
       'label' => check_plain($third_term->label()),
     ));
-    $this->assertRaw(drupal_json_encode($target), 'Autocomplete returns a term containing a comma and a slash.');
+    $this->assertRaw(Json::encode($target), 'Autocomplete returns a term containing a comma and a slash.');
   }
 
   /**
