zoukankan      html  css  js  c++  java
  • 对象->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),安全。

  • 相关阅读:
    [置顶] 移动应用不得不看的三张图
    重新签名apk文件(手工用命令行)
    o(n)解决问题:调整数组顺序是奇数位于偶数的前面
    安装DBMS_SHARED_POOL包
    sql server 实现sleep延时
    【Unity 3D】使用 2DToolkit 插件 制作2D精灵动画
    消息对话框(MessageBox)用法介绍
    java监控之ManagementFactory分析
    Java内存模型深度解析:总结--转
    Java内存模型深度解析:final--转
  • 原文地址:https://www.cnblogs.com/TRY0929/p/13873077.html
Copyright © 2011-2022 走看看