• 对象->json过程中的问题


    类对象->json过程中的问题

    客户端与服务器之间通信一般都是以JSON对象形式,但是js中都是以对象方式存储,当要把对象转化为JSON形式的时候,直接给这个对象赋某个属性和值之后没有办法在转化后的JSON中找到,如何解决呢?

    问题描述

    问题是不是没看太明白,举个例子吧。现在得到了一个名为art的对象,但现在需要的数据是art对象里的数据加上一个index数据。首先想到的应该是 直接art.index = index将该属性放到art上,但是这样之后转化得到的JSON数据里并没有index属性和值,为什么?

    • 其实在对象转json中,存在一个属性能否序列化的问题,由于js对象可以比较复杂,不仅仅只有数据属性值,还可能有函数 或者嵌套对象,所以对象中并不是所有东西 在转化为json之后都还能找到
    • 实际上在对象里,只有dataValues这样一个属性底下的值可以序列化(也就是转化为json之后能看到),那么解决方案就出来了!

    解决方案1.0

    若要给对象添加可以序列化的值,要用 art.dataValues.index = index

    存在的问题

    注意,这时在看完源码,知道只有dataValues这个下面的值会被序列化,其实这种方法非常不好。

    • js是一门动态语言,从es6开始支持类了,但是它并不像Java、C++等语言一样存在私有变量的概念,js类中都是公开的,都是从外界可以直接访问并且修改的
    • 这样就产生了一个很大的问题,类中的数据成员对外界来说丝毫没有隐私性可言,都是直接可以被操控修改的数据,所以最好不要用1.0的解决方式
    • 那用什么?用类中的自制的函数来修改自己的变量成员就很安全,基于这种方式 就有了解决方案2.0

    解决方案2.0

    利用内置函数来对私有变量进行修改,而不是直接在变量身上进行操作,也就是调用内置的setDataValue(key, value),安全。

  • 相关阅读:
    java编程题古典算法之兔子问题
    java基础之final关键字
    java基础之final关键字
    java基础之静态代码块,局部代码块,构造代码块区别。
    java基础之静态代码块,局部代码块,构造代码块区别。
    java基础之完数判断
    java基础之完数判断
    java基础之二维数组不定义列数
    正则表达式快速入门
    深入理解JSON对象
  • 原文地址:https://www.cnblogs.com/TRY0929/p/13873077.html
Copyright © 2020-2023  润新知