diff --git a/src/channel.c b/src/channel.c
index 811d87a..a6458c6 100644
--- a/src/channel.c
+++ b/src/channel.c
@@ -853,24 +853,31 @@
 	{
 	    typval_T	*tv;
 	    typval_T	err_tv;
-	    char_u	*json;
+	    char_u	*json = NULL;
 
 	    /* Don't pollute the display with errors. */
 	    ++emsg_skip;
 	    tv = eval_expr(arg, NULL);
-	    --emsg_skip;
 	    if (is_eval)
 	    {
-		if (tv == NULL)
+		if (tv != NULL)
+		    json = json_encode_nr_expr(arg3->vval.v_number, tv);
+		if (tv == NULL || (json != NULL && *json == NUL))
 		{
+		    /* If evaluation failed or the result can't be encoded
+		     * then return the string "ERROR". */
 		    err_tv.v_type = VAR_STRING;
 		    err_tv.vval.v_string = (char_u *)"ERROR";
 		    tv = &err_tv;
+		    json = json_encode_nr_expr(arg3->vval.v_number, tv);
 		}
-		json = json_encode_nr_expr(arg3->vval.v_number, tv);
-		channel_send(idx, json, "eval");
-		vim_free(json);
+		if (json != NULL)
+		{
+		    channel_send(idx, json, "eval");
+		    vim_free(json);
+		}
 	    }
+	    --emsg_skip;
 	    if (tv != &err_tv)
 		free_tv(tv);
 	}
diff --git a/src/json.c b/src/json.c
index 6688437..17eed4f 100644
--- a/src/json.c
+++ b/src/json.c
@@ -21,6 +21,8 @@
 
 /*
  * Encode "val" into a JSON format string.
+ * The result is in allocated memory.
+ * The result is empty when encoding fails.
  */
     char_u *
 json_encode(typval_T *val)
@@ -29,12 +31,16 @@
 
     /* Store bytes in the growarray. */
     ga_init2(&ga, 1, 4000);
-    json_encode_item(&ga, val, get_copyID(), TRUE);
+    if (json_encode_item(&ga, val, get_copyID(), TRUE) == FAIL)
+    {
+	vim_free(ga.ga_data);
+	return vim_strsave((char_u *)"");
+    }
     return ga.ga_data;
 }
 
 /*
- * Encode ["nr", "val"] into a JSON format string.
+ * Encode ["nr", "val"] into a JSON format string in allocated memory.
  * Returns NULL when out of memory.
  */
     char_u *
@@ -136,8 +142,11 @@
 		case VVAL_FALSE: ga_concat(gap, (char_u *)"false"); break;
 		case VVAL_TRUE: ga_concat(gap, (char_u *)"true"); break;
 		case VVAL_NONE: if (!allow_none)
+				{
 				    /* TODO: better error */
 				    EMSG(_(e_invarg));
+				    return FAIL;
+				}
 				break;
 		case VVAL_NULL: ga_concat(gap, (char_u *)"null"); break;
 	    }
@@ -155,6 +164,7 @@
 	    break;
 
 	case VAR_FUNC:
+	case VAR_JOB:
 	    /* no JSON equivalent TODO: better error */
 	    EMSG(_(e_invarg));
 	    return FAIL;
@@ -226,14 +236,15 @@
 	    }
 	    break;
 
-#ifdef FEAT_FLOAT
 	case VAR_FLOAT:
+#ifdef FEAT_FLOAT
 	    vim_snprintf((char *)numbuf, NUMBUFLEN, "%g", val->vval.v_float);
 	    ga_concat(gap, numbuf);
 	    break;
 #endif
-	default: EMSG2(_(e_intern2), "json_encode_item()"); break;
-		 return FAIL;
+	case VAR_UNKNOWN:
+	    EMSG2(_(e_intern2), "json_encode_item()"); break;
+	    return FAIL;
     }
     return OK;
 }
diff --git a/src/testdir/test_channel.py b/src/testdir/test_channel.py
index d8830c5..40a2043 100644
--- a/src/testdir/test_channel.py
+++ b/src/testdir/test_channel.py
@@ -93,6 +93,13 @@
                         print("sending: {}".format(cmd))
                         self.request.sendall(cmd.encode('utf-8'))
                         response = "ok"
+                    elif decoded[1] == 'eval-error':
+                        # Send an eval request that works but the result can't
+                        # be encoded.
+                        cmd = '["eval","function(\\"tr\\")", -3]'
+                        print("sending: {}".format(cmd))
+                        self.request.sendall(cmd.encode('utf-8'))
+                        response = "ok"
                     elif decoded[1] == 'eval-bad':
                         # Send an eval request missing the third argument.
                         cmd = '["eval","xxx"]'
diff --git a/src/testdir/test_channel.vim b/src/testdir/test_channel.vim
index 94ad81c..2a56c0d 100644
--- a/src/testdir/test_channel.vim
+++ b/src/testdir/test_channel.vim
@@ -118,10 +118,15 @@
   sleep 10m
   call assert_equal([-2, 'ERROR'], ch_sendexpr(handle, 'eval-result'))
 
+  " Send an eval request that works but can't be encoded.
+  call assert_equal('ok', ch_sendexpr(handle, 'eval-error'))
+  sleep 10m
+  call assert_equal([-3, 'ERROR'], ch_sendexpr(handle, 'eval-result'))
+
   " Send a bad eval request. There will be no response.
   call assert_equal('ok', ch_sendexpr(handle, 'eval-bad'))
   sleep 10m
-  call assert_equal([-2, 'ERROR'], ch_sendexpr(handle, 'eval-result'))
+  call assert_equal([-3, 'ERROR'], ch_sendexpr(handle, 'eval-result'))
 
   " Send an expr request
   call assert_equal('ok', ch_sendexpr(handle, 'an expr'))
diff --git a/src/testdir/test_json.vim b/src/testdir/test_json.vim
index 05c3949..52cffc8 100644
--- a/src/testdir/test_json.vim
+++ b/src/testdir/test_json.vim
@@ -75,6 +75,9 @@
   call assert_fails('echo jsonencode(function("tr"))', 'E474:')
   call assert_fails('echo jsonencode([function("tr")])', 'E474:')
   call assert_fails('echo jsonencode({"key":v:none})', 'E474:')
+
+  silent! let res = jsonencode(function("tr"))
+  call assert_equal("", res)
 endfunc
 
 func Test_decode()
diff --git a/src/version.c b/src/version.c
index f979949..00b7176 100644
--- a/src/version.c
+++ b/src/version.c
@@ -748,6 +748,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1278,
+/**/
     1277,
 /**/
     1276,
