JSON.stringify() not a function ,改为window.JSON.stringify()就解决?

今天写项目的时候一直报错JSON.stringify() not a function,改为window.JSON.stringify()就好了。
这是为啥

img

img

作用域的问题,你使用 JSON 方法的地方,所在的类里应该也包含一个 JSON 对象,所以需要指定使用哪个作用域的

可能 和 this指向有关

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7634313
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:JSON.stringify()之转义符(反斜杠)解决办法
  • 除此之外, 这篇博客: JS中的JSON.Stringify 方法详解中的 JSON.stringify 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    JSON.stringify 方法是将一个 JavaScript 对象或值转换为 JSON 字符串,默认该方法其实有三个参数:第一个参数是必选,后面两个是可选参数非必选。第一个参数传入的是要转换的对象;第二个是一个 replacer 函数,比如指定的 replacer 是数组,则可选择性地仅处理包含数组指定的属性;第三个参数用来控制结果字符串里面的间距,后面两个参数整体用得比较少。

    该方法的语法为:JSON.stringify(value[, replacer [, space]])

    下面我们通过一段代码来看看后面几个参数的妙用,如下所示。

    JSON.stringify({ x: 1, y: 2 });
    // "{"x":1,"y":2}"
    JSON.stringify({ x: [10, undefined, function(){}, Symbol('')] })
    // "{"x":[10,null,null,null]}"
    /* 第二个参数的例子 */
    function replacer(key, value) {
      if (typeof value === "string") {
        return undefined;
      }
      return value;
    }
    var foo = {foundation: "Mozilla", model: "box", week: 4, transport: "car", month: 7};
    var jsonString = JSON.stringify(foo, replacer);
    console.log(jsonString);
    // "{"week":4,"month":7}"
    /* 第三个参数的例子 */
    JSON.stringify({ a: 2 }, null, " ");
    /* "{
     "a": 2
    }"*/
    JSON.stringify({ a: 2 }, null, "");
    // "{"a":2}"
    

    从上面的代码中可以看到,增加第二个参数 replacer 带来的变化:通过替换方法把对象中的属性为字符串的过滤掉,在 stringify 之后返回的仅为数字的属性变成字符串之后的结果;当第三个参数传入的是多个空格的时候,则会增加结果字符串里面的间距数量,从最后一段代码中可以看到结果。

    如果本篇内容对您有帮助,帮忙点击此链接,让小编加个鸡腿哟!

    github.crmeb.net/u/xingfu

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^