• JSON --- 一种轻量级的数据交换格式


    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。本篇主要介绍javascript中json的使用方法。

    1. 语法

    JSON支持表示三种类型的数据:简单值对象数组

    • 简单值

    和javascript基本数据类型一样,但是不支持undefined

    • 对象

    对象属性一定要加双引号"", 并且末尾没有分号;

    {
        "name" : "roddy",
        "age" : 25
    }
    
    • 数组

    和javascript数组一样。

    2. 解析与序列化

    javascript中主要用JSON对象的.stringify().parse()方法来解析和序列化。

    JSON.stringify( jsData[, filter, indent] )

    • 把javascript对象序列化为JSON格式的字符串。
    • jsData : 待序列化的javascript数据。
    • filter: 过滤器,可以是一个数组或者一个函数。
      数组: 序列化的JSON中只包含数组中拥有的属性。
      函数: 该函数接收两个参数,分别是对应的键值对keyvalue,该函数返回的值即为JSON中属性对应的值。
    • indent: 缩进。可以是一个数值或者一个字符串。
      数值: 缩进对应数值的空格符。
      字符串: 用对应字符串代替缩进符。
    // javascript对象
    var jsObject = {
        name : "roddy",
        age : 25
    };
    
    // 默认
    console.log( JSON.stringify( jsObject ) );
    // 传入数组过滤器
    console.log( JSON.stringify( jsObject, [ "name" ] ) );
    // 传入函数过滤器
    console.log( JSON.stringify( jsObject, function( key, value ) {
        if( key === "name" ) {
            return "Roddy";
        } else {
            return value;
        }
    } ) );
    // 传入数值缩进
    console.log( JSON.stringify( jsObject, null, 4 ) );
    // 传入字符串缩进
    console.log( JSON.stringify( jsObject, null, "-" ) );
    
    // 输出
    // {"name":"roddy","age":25}
    // {"name":"roddy"}
    // {"name":"Roddy","age":25}
    /**
    {
        "name":"roddy",
        "age":25
     }
    **/
    /**
    {
    -"name":"roddy",
    -"age":25
    }
    **/
    

    JSON.parse( jsonData[, reduction])

    • 把JSON格式数据解析为javascript数据
    • jsonData: 待解析的JSON数据
    • reduction: 还原函数,该函数接收两个参数,分别是对应的键值对keyvalue,该函数返回的值即为javascript中属性对应的值。
    var jsonString = '{ "name" : "roddy", "age" : 25 }';
    
    // 默认
    console.log( JSON.parse( jsonString ) );
    // 传入还原函数
    console.log( JSON.parse( jsonString, function( key, value ) {
        if( key === "name" ) {
            return "Roddy";
        } else {
            return value;
        }
    } ) );
    
    // 输出
    // {name:"roddy",age:25}
    // {name:"Roddy",age:25}
    
  • 相关阅读:
    LeetCode第1题(two sum) 暴力法性能优化
    java.sql.SQLException: Column 'id' not found.
    数据分页显示 之 确定总页码数(优化)
    IntelliJ IDEA 提示"Form input without an associated label or title attribute"
    在JSP中图片上传到服务器后无法读取(已解决)
    The maximum-subarray problem
    Chapter 2:Getting Started
    Merge Sort in Java, C,C++ and Python
    Chapter 9 :Further Applications of Integration
    gSoap 中文传输
  • 原文地址:https://www.cnblogs.com/roddy/p/6515485.html
Copyright © 2020-2023  润新知