mirror of
https://github.com/vim/vim.git
synced 2025-09-23 03:43:49 -04:00
patch 8.0.1391: encoding empty string to JSON sometimes gives "null"
Problem: Encoding empty string to JSON sometimes gives "null". Solution: Handle NULL string as empty string. (closes #2446)
This commit is contained in:
@@ -92,7 +92,7 @@ write_string(garray_T *gap, char_u *str)
|
|||||||
char_u numbuf[NUMBUFLEN];
|
char_u numbuf[NUMBUFLEN];
|
||||||
|
|
||||||
if (res == NULL)
|
if (res == NULL)
|
||||||
ga_concat(gap, (char_u *)"null");
|
ga_concat(gap, (char_u *)"\"\"");
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
#if defined(FEAT_MBYTE) && defined(USE_ICONV)
|
#if defined(FEAT_MBYTE) && defined(USE_ICONV)
|
||||||
@@ -237,7 +237,7 @@ json_encode_item(garray_T *gap, typval_T *val, int copyID, int options)
|
|||||||
case VAR_LIST:
|
case VAR_LIST:
|
||||||
l = val->vval.v_list;
|
l = val->vval.v_list;
|
||||||
if (l == NULL)
|
if (l == NULL)
|
||||||
ga_concat(gap, (char_u *)"null");
|
ga_concat(gap, (char_u *)"[]");
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (l->lv_copyID == copyID)
|
if (l->lv_copyID == copyID)
|
||||||
@@ -272,7 +272,7 @@ json_encode_item(garray_T *gap, typval_T *val, int copyID, int options)
|
|||||||
case VAR_DICT:
|
case VAR_DICT:
|
||||||
d = val->vval.v_dict;
|
d = val->vval.v_dict;
|
||||||
if (d == NULL)
|
if (d == NULL)
|
||||||
ga_concat(gap, (char_u *)"null");
|
ga_concat(gap, (char_u *)"{}");
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (d->dv_copyID == copyID)
|
if (d->dv_copyID == copyID)
|
||||||
|
@@ -103,6 +103,10 @@ func Test_json_encode()
|
|||||||
call assert_fails('echo json_encode(function("tr"))', 'E474:')
|
call assert_fails('echo json_encode(function("tr"))', 'E474:')
|
||||||
call assert_fails('echo json_encode([function("tr")])', 'E474:')
|
call assert_fails('echo json_encode([function("tr")])', 'E474:')
|
||||||
|
|
||||||
|
call assert_equal('{"a":""}', json_encode({'a': test_null_string()}))
|
||||||
|
call assert_equal('{"a":[]}', json_encode({"a": test_null_list()}))
|
||||||
|
call assert_equal('{"a":{}}', json_encode({"a": test_null_dict()}))
|
||||||
|
|
||||||
silent! let res = json_encode(function("tr"))
|
silent! let res = json_encode(function("tr"))
|
||||||
call assert_equal("", res)
|
call assert_equal("", res)
|
||||||
endfunc
|
endfunc
|
||||||
|
@@ -771,6 +771,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
1391,
|
||||||
/**/
|
/**/
|
||||||
1390,
|
1390,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user