JSON.parse()与JSON.stringify()高级用法

JSON.parse()与JSON.stringify是将JSON对象与字符串互相转换的方法,它们还有一些参数可以让我们在实际应用中更加方便,现在介绍一下它们的高级用法

JSON.parse()

JSON.parse(jsonString, (key, value) => {}) 可以接受两个参数,第一个就是我们已经熟悉的json字符串,第二个是一个回调函数,我们可以对返回的每一个value做处理,然后返回对应的value

const testJSON = {
   name: ‘test‘,
   value:  7,
};

const jsonStr = JSON.stringify(testJSON);

JSON.parse(jsonStr, (key, value) => {
   if (typeof value === ‘string‘) {
       return value.toUpperCase();
   }
   return value;
});

// {
       name: ‘TEST‘,
       value: 7,
    }

JSON.stringify()

JSON.stringify(jsonObject, replace, space) 可以接受三个参数,第一个是json对象,第二个在转成字符串前处理属性值,第三个在字符串中插入空白符增强可读性

replace: 传入的参数可以是一个数组,也可以是一个回调函数,作用都是用于处理属性值;当是一个数组时,只有在数组中存在的属性,才会出现在最终转成的字符串中;当是一个回调函数时,可以处理每一个属性值,然后返回经过处理的值,若返回值是undefined ,则该属性值会被忽略,将不会出现在最终的字符串中。

(注意: 当relace为数组,过滤属性时,嵌套属性同样会被过滤掉)

const testJSON = {
   name: ‘test‘,
   cities: {
      shanghai: 1,
   },
};

JSON.stringify(testJSON, [‘name‘]);

// "{"name": ‘test‘}"

JSON.stringify(testJSON, [‘name‘, ‘cities‘]);

//  "{"name": ‘test‘, "cities": {}}"

JSON.stringify(testJSON, [‘name‘, ‘cities‘, ‘shanghai‘]);

// "{"name": ‘test‘, "cities": {"shanghai": 1}}"

JSON.stringify(testJSON, (key, value) => {
    if (key === ‘cities‘) {
       return  ‘cities‘;
    }
    return value;
});

// "{"name": ‘test‘, "cities": ‘cities‘}"

JSON.stringify(testJSON, (key, value) => {
    if (key === ‘shanghai‘) {
       return 9;
   }
   return value;
});

// "{"name": ‘test‘, "cities": {"shanghai": 9}}"

space: 传入的参数可以是String或Number的值,如果是String值,则该字符串会作为空白符,字符串最长可为10个字符,如果超过了10个字符,那么会截取前10个字符,若是undefined或null,则会被忽略,不会显示空白符;如果是Number的值,表示会有多少个空格作为空白符,最大数值为10,超过10也会被当做10来处理,最小为1,小于1则无效,不会显示空格

const testJSON = {
   name: ‘test‘,
   city: ‘shanghai‘,
};

JSON.stringify(testJSON, undefined, ‘ ‘);

// "{
       "name": ‘test‘,
       "city": ‘shanghai‘,
     }"

JSON.stringify(testJSON, undefined, ‘     ‘);

// "{
           "name": ‘test‘,
           "city": ‘shanghai‘,
     }"

JSON.stringify(testJSON, undefined, ‘\t‘);

// "{
        "name": ‘test‘,
        "city": ‘shanghai‘,
     }"

JSON.stringify(testJSON, undefined, ‘...‘);

// "{
      ..."name": ‘test‘,
      ..."city": ‘shanghai‘,
     }"

JSON.stringify(testJSON, undefined, 7);

// "{
             "name": ‘test‘,
             "city": ‘shanghai‘,   // 缩进7个空格
     }"

toJSON方法

如果一个被序列化的json对象拥有toJSON方法,那么真正被序列化的值是toJSON方法返回的值,而不是本身的对象

const testJSON = {
   name: ‘test‘,
   toJSON: () => {
      return { toJson: ‘testJson‘ },
   },
};

JSON.stringify(testJSON);

// "{"toJson": ‘testJson‘}"

JSON.stringify()序列化复杂的json对象

有的json对象中包含函数,那么序列化是会忽略掉函数,当我们想保留函数时,可以通过replace(回调函数)来处理

const testJSON = {
   name: ‘test‘,
   getName: () => {
     return ‘test‘;
   },
};

JSON.stringify(kTextJson, (key, value) => {
      if (typeof value === ‘function‘) {
        return Function.prototype.toString.call(value);
      }
      return value;
    }, ‘\t‘));

//  {
      "name": "test",
      "getName": "function getName() {\n    return ‘test‘;\n  }"
    }

参考文章:https://www.css88.com/archives/8735

原文地址:https://www.cnblogs.com/yezi-dream/p/10263043.html

时间: 2024-08-14 22:33:24

JSON.parse()与JSON.stringify()高级用法的相关文章

JSON.parse()和JSON.stringify() 用法

parse 从字符串解析出json对象: var data = '{"a":1,"b":2}'; JSON.parse(data); 返回Object a:1 b:2 _proto_:Object stringify从json对象解析出字符串: var data = {a:1,b:2} JSON.stringify(data) 返回: '{"a":"1","b":"2"}' JSON.p

浅谈JSON.parse()、JSON.stringify()和eval()的作用

相信大家对于JSON应该不陌生,度娘对这个名词的解释大致如下: “JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集.因为采用独立于语言的文本格式,也使用了类似于C语言家族的习惯,拥有了这些特性使JSON成为理想的数据交换语言,作用是易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率).” 今天在这里笔者想简单谈谈jquery里面的JSON.parse()和JSON.stringify()函数,顺便

JSON.parse和JSON.stringify 参数详解

JSON.parse和JSON.stringify这两个浏览器自带(IE6/7除外)的方法平常我们经常用到,但是一般都只是用到了他们的第一个参数,比如字符串转对象:JSON.parse('{}')   对象转字符串:JSON.stringify({}) 今天特意看了下这两个方法的定义,第二个可选参数也是非常有用. 1. JSON.parse(text[, reviver]) text :     要被解析成JSON对象的字符串 reviver : 如果是一个函数,则规定了原始值如何被解析改造,在

有关javascript中的JSON.parse和JSON.stringify的使用一二

有没有想过,当我们的大后台只是扮演一个数据库的角色,json在前后台的数据交换中扮演极其重要的角色时,作为依托node的前端开发,其实相当多的时间都是在处理数据,准确地说就是在处理逻辑和数据(这周实习最大的收获). 而对于依托json格式传输的数据,处理数据时,用到JSON.strinify和JSON.parse的概率是百分之百.使用这两个方法so easy,但是你真的知道其中一些相关的细节以及其中牵涉到的javascript的知识么? JSON.parse用于从一个字符串中解析出json对象.

J-Query开发锦集(0):JSON.parse()和JSON.stringify()区别

项目中我们经常会使用JSON字符串转换,而且很频繁.所以总结如下,很简单的代码. 1 <!doctype html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>JSON.parse()和JSON.stringify()区别</title> 6 <script type="text/javascrip

JSON.parse与JSON.stringify

JSON:JavaScript Object Notation(JavaScript对象表示法):甚至我们就可以大致认为JSON就是Javascript的对象,只不过范围小上一些. JSON的MIME类型是"application/json" JSON.parse(text[,reviver]) []中的表示可选内容,reviver是一个函数,对象中每个成员都调用这个函数 JSON.parse()将JSON格式的字符串解析成JavaScript对象 1 var a='{"na

JSON.parse() 和 JSON.stringify()的简单介绍

参考地址: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify 最近一段时间在测试前端页面的时候, 需要对后台数据进行处理, 后台返回的数据基本都是json格式, 这里就要用到

秒懂JSON.parse()与JSON.stringify()的区别

在网站开发中,Json是最为常见的一种数据交互手段.在使用过程中,常会遇到Json字段串和对象之间进行转换.很多朋友对于JSON.parse() 和JSON.stringify() 的区别,下面为大家解讲一下! JSON.parse()[从一个字符串中解析出json对象] 例子: //定义一个字符串 var data='{"name":"goatling"}' //解析对象? ?JSON.parse(data) 结果是: ?name:"goatling&q

JSON.parse()、JSON.stringify()和eval()的作用

相信大家对于JSON应该不陌生,度娘对这个名词的解释大致如下: “JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集.因为采用独立于语言的文本格式,也使用了类似于C语言家族的习惯,拥有了这些特性使JSON成为理想的数据交换语言,作用是易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率).” 今天在这里笔者想简单谈谈jquery里面的JSON.parse()和JSON.stringify()函数,顺便