diff --git a/src/backend/utils/adt/json.c b/src/backend/utils/adt/json.c
index f0cbb3959961288dc8653b8c9f281fa8a3de20ea..fd1d8fb988fdcfbcbbd9cb06b34ca610eabaee91 100644
--- a/src/backend/utils/adt/json.c
+++ b/src/backend/utils/adt/json.c
@@ -18,6 +18,7 @@
 #include "lib/stringinfo.h"
 #include "libpq/pqformat.h"
 #include "mb/pg_wchar.h"
+#include "miscadmin.h"
 #include "parser/parse_coerce.h"
 #include "utils/array.h"
 #include "utils/builtins.h"
@@ -895,6 +896,8 @@ datum_to_json(Datum val, bool is_null, StringInfo result,
 	bool		numeric_error;
 	JsonLexContext dummy_lex;
 
+	check_stack_depth();
+
 	if (is_null)
 	{
 		appendStringInfoString(result, "null");