diff --git a/configure.ac b/configure.ac
index ec593bc0e6fb568477a2ff1e2799332c16a5f7e0..c7352b08d798e2de9a06d9bb1eca7e6b23ff9511 100644
--- a/configure.ac
+++ b/configure.ac
@@ -38,9 +38,9 @@ if test "x$have_guile_simple_zmq" != "xyes"; then
 fi
 
 dnl Check dor Guile-Json.
-GUILE_MODULE_AVAILABLE([have_guile_json], [(json)])
+GUILE_MODULE_AVAILABLE([have_guile_json], [(json parser)])
 if test "x$have_guile_json" != "xyes"; then
-   AC_MSG_ERROR([Guile-Json is missing; please install it.])
+   AC_MSG_ERROR([Guile-JSON is missing; please install it.])
 fi
 
 dnl Check for Guile-Gcrypt >= 0.2.0.
diff --git a/environment.scm b/environment.scm
index 88149e8c1cd8ced4b76c46d781efbc05199a9b59..fcacf7bb738e0ea24554be4caca8e516d75a480d 100644
--- a/environment.scm
+++ b/environment.scm
@@ -91,7 +91,7 @@
    `(("guix" ,guix)
      ("guile" ,@(assoc-ref (package-native-inputs guix) "guile"))))
   (propagated-inputs
-   `(("guile-json" ,guile-json-3)
+   `(("guile-json" ,guile-json-4)
      ("guile-simple-zmq" ,guile-simple-zmq)
      ("guile-gcrypt" ,guile-gcrypt)))
 
diff --git a/guix-jupyter-kernel.scm b/guix-jupyter-kernel.scm
index 03b68e2ee444407ad36abfd119eca4dab66336a0..630d235afc442c3c4e9bee41e0415cd359e2ed53 100644
--- a/guix-jupyter-kernel.scm
+++ b/guix-jupyter-kernel.scm
@@ -16,7 +16,8 @@
 ;;; You should have received a copy of the GNU General Public License
 ;;; along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
-(use-modules (json)
+(use-modules (json parser)
+             (json builder)
              (simple-zmq)
              (git)                                ;for 'git-error-message'
 	     (srfi srfi-1)
diff --git a/guix/jupyter/kernel.scm b/guix/jupyter/kernel.scm
index b5e72ced7e38f39a1330ee4e75c1a7f7609f9f76..812b4137ee3935c5d5f3b847d53b9b6fac8b3982 100644
--- a/guix/jupyter/kernel.scm
+++ b/guix/jupyter/kernel.scm
@@ -1,5 +1,5 @@
 ;;; Guix-kernel -- Guix kernel for Jupyter
-;;; Copyright (C) 2019 Ludovic Courtès <ludovic.courtes@inria.fr>
+;;; Copyright (C) 2019, 2021 Ludovic Courtès <ludovic.courtes@inria.fr>
 ;;;
 ;;; This program is free software: you can redistribute it and/or modify
 ;;; it under the terms of the GNU General Public License as published by
@@ -29,7 +29,8 @@
   #:use-module ((gnu build linux-container) #:select (%namespaces))
   #:use-module (srfi srfi-1)
   #:use-module (ice-9 match)
-  #:use-module (json)
+  #:use-module (json parser)
+  #:use-module (json builder)
   #:export (%language-info
             %kernel-info-reply
 
diff --git a/guix/jupyter/proxy.scm b/guix/jupyter/proxy.scm
index 398cb3a51aa792d2cda1d507494f258feff5f248..a6bf8a4c7211b037702f28c501078862f9a9dd39 100644
--- a/guix/jupyter/proxy.scm
+++ b/guix/jupyter/proxy.scm
@@ -1,5 +1,5 @@
 ;;; Guix-kernel -- Guix kernel for Jupyter
-;;; Copyright (C) 2019 Ludovic Courtès <ludovic.courtes@inria.fr>
+;;; Copyright (C) 2019, 2021 Ludovic Courtès <ludovic.courtes@inria.fr>
 ;;;
 ;;; This program is free software: you can redistribute it and/or modify
 ;;; it under the terms of the GNU General Public License as published by
@@ -19,7 +19,8 @@
   #:use-module (jupyter messages)
   #:use-module (jupyter kernels)
   #:use-module (jupyter servers)
-  #:use-module (json)
+  #:use-module (json parser)
+  #:use-module (json builder)
   #:use-module (gcrypt base16)
   #:use-module ((guix build utils) #:select (delete-file-recursively))
   #:use-module (srfi srfi-1)
diff --git a/jupyter/guile.scm b/jupyter/guile.scm
index d69c581951a3bc069d970b895ad191b9e129be72..e21456113efd3fd9d8a455f456abcd892eef8591 100644
--- a/jupyter/guile.scm
+++ b/jupyter/guile.scm
@@ -1,5 +1,5 @@
 ;;; Guix-kernel -- Guix kernel for Jupyter
-;;; Copyright (C) 2019 Ludovic Courtès <ludovic.courtes@inria.fr>
+;;; Copyright (C) 2019, 2021 Ludovic Courtès <ludovic.courtes@inria.fr>
 ;;;
 ;;; This program is free software: you can redistribute it and/or modify
 ;;; it under the terms of the GNU General Public License as published by
@@ -18,7 +18,8 @@
   #:use-module (jupyter messages)
   #:use-module (jupyter kernels)
   #:use-module (jupyter servers)
-  #:use-module (json)
+  #:use-module (json parser)
+  #:use-module (json builder)
   #:use-module (simple-zmq)
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-26)
diff --git a/jupyter/json.scm b/jupyter/json.scm
index cd2658c11c6d2441b7a01348798cc9ac5a822d7f..8ede1a9386182fcddd37dd65207eda036be885e0 100644
--- a/jupyter/json.scm
+++ b/jupyter/json.scm
@@ -1,5 +1,5 @@
 ;;; Guix-kernel -- Guix kernel for Jupyter
-;;; Copyright (C) 2018, 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright (C) 2018, 2019, 2021 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This program is free software: you can redistribute it and/or modify
 ;;; it under the terms of the GNU General Public License as published by
@@ -15,7 +15,7 @@
 ;;; along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
 (define-module (jupyter json)
-  #:use-module (json)
+  #:use-module (json parser)
   #:use-module (guix records)
   #:export (json
             <=>
@@ -23,7 +23,14 @@
 
 ;;; Commentary:
 ;;;
-;;; Helpers to map JSON objects to SRFI-9 records.  Taken from (guix swh).
+;;; Helpers to map JSON objects to records.  Taken from (guix swh).
+;;; Guile-JSON 4.x includes a variant of this code.  The difference is that
+;;; this module builds upon the 'define-record-type*' feature of (guix
+;;; records), whereas Guile-JSON builds on top of SRFI-9.
+;;;
+;;; Consequently, the syntax is a bit different; in particular, this variant
+;;; uses the 'json' keyword to distinguish parameters of the JSON mapping
+;;; from other properties of record fields, such as default values.
 ;;;
 ;;; Code:
 
diff --git a/jupyter/kernels.scm b/jupyter/kernels.scm
index 86b791817aa0b6d9e7af7a811f05f6815b55668f..2680d054853c1752f36f664e66d8cecf8c448e7a 100644
--- a/jupyter/kernels.scm
+++ b/jupyter/kernels.scm
@@ -1,6 +1,6 @@
 ;;; Guix-kernel -- Guix kernel for Jupyter
 ;;; Copyright (C) 2018, 2019 Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr>
-;;; Copyright (C) 2018, 2019 Ludovic Courtès <ludovic.courtes@inria.fr>
+;;; Copyright (C) 2018, 2019, 2021 Ludovic Courtès <ludovic.courtes@inria.fr>
 ;;;
 ;;; This program is free software: you can redistribute it and/or modify
 ;;; it under the terms of the GNU General Public License as published by
@@ -25,7 +25,8 @@
   #:use-module (ice-9 match)
   #:use-module (ice-9 ftw)
   #:use-module (simple-zmq)
-  #:use-module (json)
+  #:use-module (json parser)
+  #:use-module (json builder)
   #:use-module (rnrs bytevectors)
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-9)
diff --git a/jupyter/messages.scm b/jupyter/messages.scm
index 8e0841fdc951329d27c551173037664964764a74..c4069d4299c367aacf5d401d4065d6228f790e59 100644
--- a/jupyter/messages.scm
+++ b/jupyter/messages.scm
@@ -1,6 +1,6 @@
 ;;; Guix-kernel -- Guix kernel for Jupyter
 ;;; Copyright (C) 2018 Evgeny Panfilov <epanfilov@gmail.com>
-;;; Copyright (C) 2018, 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright (C) 2018, 2019, 2021 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This program is free software: you can redistribute it and/or modify
 ;;; it under the terms of the GNU General Public License as published by
@@ -17,7 +17,8 @@
 
 (define-module (jupyter messages)
   #:use-module (simple-zmq)
-  #:use-module (json)
+  #:use-module (json parser)
+  #:use-module (json builder)
   #:use-module (jupyter json)
   #:use-module (gcrypt mac)
   #:use-module (gcrypt base16)
diff --git a/jupyter/servers.scm b/jupyter/servers.scm
index f13512d8a6e7de0433f877a138e0d724c8dbbc91..16a8bd75469aa5e53041889323386d3576e6d87e 100644
--- a/jupyter/servers.scm
+++ b/jupyter/servers.scm
@@ -19,7 +19,7 @@
   #:use-module (jupyter kernels)
   #:use-module (jupyter messages)
   #:use-module (simple-zmq)
-  #:use-module (json)
+  #:use-module (json parser)
   #:use-module (rnrs bytevectors)
   #:use-module (ice-9 match)
   #:use-module (ice-9 vlist)
diff --git a/tests/guile.scm b/tests/guile.scm
index f3d855583783c924c917be2ea647006de0d81a79..f002b3f811f2645c18b5c3aee833c4e60cd8d555 100644
--- a/tests/guile.scm
+++ b/tests/guile.scm
@@ -1,5 +1,5 @@
 ;;; Guix-kernel -- Guix kernel for Jupyter
-;;; Copyright (C) 2019 Inria
+;;; Copyright (C) 2019, 2021 Inria
 ;;;
 ;;; This program is free software: you can redistribute it and/or modify
 ;;; it under the terms of the GNU General Public License as published by
@@ -20,7 +20,8 @@
   #:use-module (jupyter servers)
   #:use-module (jupyter guile)
   #:use-module (simple-zmq)
-  #:use-module (json)
+  #:use-module (json parser)
+  #:use-module (json builder)
   #:use-module (rnrs bytevectors)
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-26)
diff --git a/tests/kernels.scm b/tests/kernels.scm
index fdbde44effa3ca32f0baf7fd0731253fabc42d0f..a46cf61566852b3d48ccb5ffab2ed22d11009f13 100644
--- a/tests/kernels.scm
+++ b/tests/kernels.scm
@@ -1,5 +1,5 @@
 ;;; Guix-kernel -- Guix kernel for Jupyter
-;;; Copyright (C) 2019 Inria
+;;; Copyright (C) 2019, 2021 Inria
 ;;;
 ;;; This program is free software: you can redistribute it and/or modify
 ;;; it under the terms of the GNU General Public License as published by
@@ -18,7 +18,8 @@
   #:use-module (jupyter kernels)
   #:use-module (jupyter messages)
   #:use-module (simple-zmq)
-  #:use-module (json)
+  #:use-module (json parser)
+  #:use-module (json builder)
   #:use-module (rnrs bytevectors)
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-26)
diff --git a/tests/servers.scm b/tests/servers.scm
index 42899340be63021338d1974c062115d2cba47ea7..2716a5fb4659d831fc4dc9ffc57f9ce393d562c6 100644
--- a/tests/servers.scm
+++ b/tests/servers.scm
@@ -1,5 +1,5 @@
 ;;; Guix-kernel -- Guix kernel for Jupyter
-;;; Copyright (C) 2019 Inria
+;;; Copyright (C) 2019, 2021 Inria
 ;;;
 ;;; This program is free software: you can redistribute it and/or modify
 ;;; it under the terms of the GNU General Public License as published by
@@ -19,7 +19,8 @@
   #:use-module (jupyter messages)
   #:use-module (jupyter servers)
   #:use-module (simple-zmq)
-  #:use-module (json)
+  #:use-module (json parser)
+  #:use-module (json builder)
   #:use-module (rnrs bytevectors)
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-26)