带有reviver函数的JSON.parse返回未定义 [英] JSON.parse with reviver function returns undefined

查看:46
本文介绍了带有reviver函数的JSON.parse返回未定义的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是JSON新手,并且在 JSON.parse() :

I am new to JSON and getting this exception while using reviver parameter in JSON.parse():

TypeError: Cannot read property 'name' of undefined(…).

没有reviver参数代码可以正常工作,但是使用reviver参数时,它将引发上述异常.为什么会这样?

Without reviver parameter code works fine but with reviver parameter it throws the above exception. Why is that happening ?

var str = ' { ' +
    ' "name" : "Username", ' +
    ' "fname" : "Fathername" '
+ ' } ';

var jObj = JSON.parse(str, function (a, b) {
  console.log(a + "=>" + b);
});

document.write(
  "<h1>" + jObj.name + "</h1>",
  "<h2>" + jObj.fname + "</h2>"
);

推荐答案

因为您的reviver函数隐式返回undefined.

Because your reviver function returns implicitly undefined.

您必须返回一些内容,即变量b:

You have to return something, i.e. the variable b:

var str = JSON.stringify({ name: 'Username', fname: 'Fathername' });

var jObj = JSON.parse(str, function (a, b) {
  console.log(a, '=>', b);
  return b;
});

document.write('<h1>' + jObj.name + '</h1>', '<h2>' + jObj.fname + '</h2>');

这篇关于带有reviver函数的JSON.parse返回未定义的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆