zoukankan      html  css  js  c++  java
  • JSON 序列化和解析

    概述

    JSON 即 (Javascript Object Notation,Javascript 对象表示法),是在Javascript中写结构化数据的方式。而JSON本身只是一种数据格式。

    通常开发项目中通过JSON传输的数据并不能直接使用,需要在前端或者后端进行序列化和解析,比如:

    var book = {
      name:"json 序列化和解析",
        page:1,
     author:["michael.guo","michael.shuai"]    
    }
    

     var jsonText = JSON.stringify(book); //把javascrip对象序列化为一个JSON字符串

    注意:默认情况下jsonText不包含任何格式缩进、空格。

     var bookCopy = JSON.parse(jsonText);//把JSON字符串解析为原生Javascript值

    然后bookCopy就可以使用了,比如console.log(bookCopy.page); //1

    序列化选项

    JSON.stringify()除了可以序列化Javascript的对象外,还可以通过接收两个参数控制JSON的序列化结果。比如

    数组:

     var jsonText = JSON.stringify(book,["name"]); 

    返回

    {"title":'json 序列化和解析'"}  

    函数:

    var jsonText = JSON.stringify(book,function(key,value){
    
      switch(key){
    
        case "name":
          return value.join(",");
        case "author":
          return undefined;
        default:
          return value;
      }
    
    });  

    返回

    {"name":"json 序列化和解析"}
    

    这里只有一个name,author去哪了?

    因为author返回的undefined在过滤的时候被自动删除了。

    字符串的缩进

    刚才说默认是没有格式的,那么如果我想要有格式的呢?

    没问题!例如,已2个空格为单位缩进。如下:

    var jsonText = JSON.stringify(book,null,2); 
    

    或者

    你想玩点新花样?

    var jsonText = JSON.stringify(book,null,"-"); 
    

    toJSON()方法

    尽管JSON.stringify()可以满足大多数需求,但当处理Date对象的时候还是非常不方便,尽管有toIOSString()可以达到目的,但如果有偷懒的理由,为什么不?

    //返回字符串的 Date 对象,并格式化为 JSON 数据:
    var d=new Date();
    var n=d.toJSON();
    //n 输出结果:
    2016-02-05T02:46:42.972Z
    
  • 相关阅读:
    登录及注册页面
    多方式登录
    git笔记
    后台主页模块设计
    auth模块迁移后需新增字段
    使用idea构建SpringBoot源码
    Springboot相关面试问题
    Springboot自动加载工具-devtools的理解与使用
    SpringBoot项目的一些简单常用配置
    Java线程池及Executor框架的理解
  • 原文地址:https://www.cnblogs.com/crafts/p/5181068.html
Copyright © 2011-2022 走看看