Androidstudio 格式化json对象 快捷键 手机json格式化_json

JSON只是一种数据格式。很多编程语言都有针对JSON的解析器和序列化器。

JSON的语法可以表示以下三种类型的值。

1. 简单值:使用与JavaScript相同的语法,可以在JSON中表示字符串、数值、布尔值和 null 。但JSON不支持特殊值 undefined 。

2. 对象:对象作为一种复杂数据类型,表示的是一组有序的键值对儿。而每个键值对儿中的值可以是简单值,也可以是复杂数据类型的值。

3. 数组:数组也是一种复杂数据类型,表示一组有序的值的列表,可以通过数值索引来访问其中的值。数组的值也可以是任意类型——简单值、对象或数组。

JSON对象有两个方法:stringify() 和 parse() 。在最简单的情况下,这两个方法分别用于把JavaScript对象序列化为JSON字符串和把JSON字符串解析为原生JavaScript值。

JSON.stringify() 除了要序列化的JavaScript对象外,还可以接收另外两个参数,这两个参数用于指定以不同的方式序列化JavaScript对象。

第一个参数是个过滤器,可以是一个数组,也可以是一个函数;第二个参数是一个选项,表示是否在JSON字符串中保留缩进。单独或组合使用这两个参数,可以更全面深入地控制JSON的序列化。

如果过滤器参数是数组,那么 JSON.stringify() 的结果中将只包含数组中列出的属性。

var book = {
  "title": "无标题",
  "authors": [
    "前端精髓"
  ],
  edition: 3,
  year: 2011
};
var jsonText = JSON.stringify(book, ["title", "edition"]);
console.log(jsonText) 
// {"title":"无标题","edition":3}
如果第二个参数是函数,行为会稍有不同。传入的函数接收两个参数,属性(键)名和属性值。根据属性(键)名可以知道应该如何处理要序列化的对象中的属性。
var book = {
  "title": "无标题",
  "authors": [
    "前端精髓"
  ],
  edition: 3,
  year: 2011
};
var jsonText = JSON.stringify(book, function (key, value) {
  switch (key) {
    case "authors":
      return "张三";
    case "year":
      return 5000;
    case "edition":
      return undefined;
    default:
      return value;
  }
});
console.log(jsonText) 
// {"title":"无标题","authors":"张三","year":5000}
// 返回undefined属性将会删除
JSON.stringify() 方法的第三个参数用于控制结果中的缩进和空白符。如果这个参数是一个数值,那它表示的是每个级别缩进的空格数。
var book = {
  "title": "无标题",
  "authors": [
    "前端精髓"
  ],
  edition: 3,
  year: 2011
};
var jsonText = JSON.stringify(book, null, 4);
console.log(jsonText)
{
    "title": "无标题",
    "authors": [
        "前端精髓"
    ],
    "edition": 3,
    "year": 2011
}
如果缩进参数是一个字符串而非数值,则这个字符串将在JSON字符串中被用作缩进字符(不再使用空格)。在使用字符串的情况下,可以将缩进字符设置为制表符,或者两个短划线之类的任意字符。
var book = {
  "title": "无标题",
  "authors": [
    "前端精髓"
  ],
  edition: 3,
  year: 2011
};
var jsonText = JSON.stringify(book, null, '----');
console.log(jsonText)
{
----"title": "无标题",
----"authors": [
--------"前端精髓"
----],
----"edition": 3,
----"year": 2011
}