diff --git a/src/json.c b/src/json.c
index e447383..da8beea 100644
--- a/src/json.c
+++ b/src/json.c
@@ -16,6 +16,7 @@
 #include "vim.h"
 
 #if defined(FEAT_EVAL) || defined(PROTO)
+static int json_encode_item(garray_T *gap, typval_T *val, int copyID);
 static void json_decode_item(js_read_T *reader, typval_T *res);
 
 /*
@@ -83,7 +84,11 @@
     }
 }
 
-    void
+/*
+ * Encode "val" into "gap".
+ * Return FAIL or OK.
+ */
+    static int
 json_encode_item(garray_T *gap, typval_T *val, int copyID)
 {
     char_u	numbuf[NUMBUFLEN];
@@ -94,7 +99,7 @@
     switch (val->v_type)
     {
 	case VAR_SPECIAL:
-	    switch(val->vval.v_number)
+	    switch (val->vval.v_number)
 	    {
 		case VVAL_FALSE: ga_concat(gap, (char_u *)"false"); break;
 		case VVAL_TRUE: ga_concat(gap, (char_u *)"true"); break;
@@ -115,8 +120,9 @@
 	    break;
 
 	case VAR_FUNC:
-	    /* no JSON equivalent, skip */
-	    break;
+	    /* no JSON equivalent */
+	    EMSG(_(e_invarg));
+	    return FAIL;
 
 	case VAR_LIST:
 	    l = val->vval.v_list;
@@ -134,12 +140,14 @@
 		    ga_append(gap, '[');
 		    for (li = l->lv_first; li != NULL && !got_int; )
 		    {
-			json_encode_item(gap, &li->li_tv, copyID);
+			if (json_encode_item(gap, &li->li_tv, copyID) == FAIL)
+			    return FAIL;
 			li = li->li_next;
 			if (li != NULL)
 			    ga_append(gap, ',');
 		    }
 		    ga_append(gap, ']');
+		    l->lv_copyID = 0;
 		}
 	    }
 	    break;
@@ -172,10 +180,12 @@
 				ga_append(gap, ',');
 			    write_string(gap, hi->hi_key);
 			    ga_append(gap, ':');
-			    json_encode_item(gap, &dict_lookup(hi)->di_tv,
-								      copyID);
+			    if (json_encode_item(gap, &dict_lookup(hi)->di_tv,
+							      copyID) == FAIL)
+				return FAIL;
 			}
 		    ga_append(gap, '}');
+		    d->dv_copyID = 0;
 		}
 	    }
 	    break;
@@ -187,7 +197,9 @@
 	    break;
 #endif
 	default: EMSG2(_(e_intern2), "json_encode_item()"); break;
+		 return FAIL;
     }
+    return OK;
 }
 
 /*
diff --git a/src/proto/json.pro b/src/proto/json.pro
index 6920f51..0663545 100644
--- a/src/proto/json.pro
+++ b/src/proto/json.pro
@@ -1,5 +1,4 @@
 /* json.c */
 char_u *json_encode(typval_T *val);
-void json_encode_item(garray_T *gap, typval_T *val, int copyID);
 void json_decode(js_read_T *reader, typval_T *res);
 /* vim: set ft=c : */
diff --git a/src/testdir/test_json.vim b/src/testdir/test_json.vim
index a1cfa93..beabec8 100644
--- a/src/testdir/test_json.vim
+++ b/src/testdir/test_json.vim
@@ -27,6 +27,9 @@
 let l2 = ['a', s:varl2, 'c']
 let s:varl2[1] = l2
 let s:varl2x = [1, ["a", [], "c"], 3]
+let s:jsonl3 = '[[1,2],[1,2]]'
+let l3 = [1, 2]
+let s:varl3 = [l3, l3]
 
 let s:jsond1 = '{"a":1,"b":"bee","c":[1,2]}'
 let s:vard1 = {"a": 1, "b": "bee","c": [1,2]}
@@ -36,6 +39,9 @@
 let d2 = {"a": "aa", "b": s:vard2, "c": "cc"}
 let s:vard2["2"] = d2
 let s:vard2x = {"1": 1, "2": {"a": "aa", "b": {}, "c": "cc"}, "3": 3}
+let d3 = {"a": 1, "b": 2}
+let s:vard3 = {"x": d3, "y": d3}
+let s:jsond3 = '{"x":{"a":1,"b":2},"y":{"a":1,"b":2}}'
 
 let s:jsonvals = '[true,false,,null]'
 let s:varvals = [v:true, v:false, v:none, v:null]
@@ -58,11 +64,16 @@
 
   call assert_equal(s:jsonl1, jsonencode(s:varl1))
   call assert_equal(s:jsonl2, jsonencode(s:varl2))
+  call assert_equal(s:jsonl3, jsonencode(s:varl3))
 
   call assert_equal(s:jsond1, jsonencode(s:vard1))
   call assert_equal(s:jsond2, jsonencode(s:vard2))
+  call assert_equal(s:jsond3, jsonencode(s:vard3))
 
   call assert_equal(s:jsonvals, jsonencode(s:varvals))
+
+  call assert_fails('echo jsonencode(function("tr"))', 'E474:')
+  call assert_fails('echo jsonencode([function("tr")])', 'E474:')
 endfunc
 
 func Test_decode()
@@ -84,9 +95,11 @@
   call assert_equal(s:varl1, jsondecode(s:jsonl1))
   call assert_equal(s:varl2x, jsondecode(s:jsonl2))
   call assert_equal(s:varl2x, jsondecode(s:jsonl2s))
+  call assert_equal(s:varl3, jsondecode(s:jsonl3))
 
   call assert_equal(s:vard1, jsondecode(s:jsond1))
   call assert_equal(s:vard2x, jsondecode(s:jsond2))
+  call assert_equal(s:vard3, jsondecode(s:jsond3))
 
   call assert_equal(s:varvals, jsondecode(s:jsonvals))
 
diff --git a/src/version.c b/src/version.c
index 27496b9..936fe0a 100644
--- a/src/version.c
+++ b/src/version.c
@@ -742,6 +742,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1166,
+/**/
     1165,
 /**/
     1164,
