patch 7.4.1278
Problem:    When jsonencode() fails it still returns something.
Solution:   Return an empty string on failure.
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()