【问题记录】对象->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),安全。
标签:
问题记录
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现