当前位置:  开发笔记 > 编程语言 > 正文

JSON与类?

如何解决《JSON与类?》经验,为你挑选了1个好方法。

是否有一种标准化的方法来存储JSON中的类,然后从字符串中再次将它们转换回类?例如,我可能有一个类型为Questions的对象数组.我想将其序列化为JSON并将其发送到(例如)一个JavaScript页面,该页面将JSON字符串转换回对象.但它应该能够使用我已经拥有的构造函数将问题转换为Question类型的对象:

function Question(id, title, description){

}

有没有标准化的方法来做到这一点?我有一些关于如何做的想法,但重新发明轮子等等.

编辑:

澄清我的意思是类:几种语言可以使用类(JAVA,PHP,C#),它们通常会通过JSON与JavaScript通信.在服务器端,数据存储在类的实例中,但是当您序列化它们时,这会丢失.反序列化后,最终会得到一个对象结构,该结构不指示您拥有的对象类型.JavaScript支持原型OOP,您可以从构造函数创建对象,这些对象将成为构造函数的类型,例如上面的问题.我的想法是让类实现一个JSONType接口,它有两个函数:

public interface JSONType{
  public String jsonEncode();//Returns serialized JSON string
  public static JSONType jsonDecode(String json);
}

例如,Question类将实现JSONType,因此当我序列化我的数组时,它将为该数组中的每个元素调用jsonEncode(它检测到它实现了JSONType).结果将是这样的:

[{typeof:"Question", id:0, title:"Some Question", description:"blah blah blah"},
 {typeof:"Question", id:0, title:"Some Question", description:"blah blah blah"},
 {typeof:"Question", id:0, title:"Some Question", description:"blah blah blah"}]

然后javascript代码将看到typeof属性,并寻找一个Question函数,然后调用Question对象上的静态函数,类似于上面的接口(是的,我知道这里有一个XSS安全漏洞).jsonDecode对象将返回Question类型的对象,并将递归地解码JSON值(例如,可能存在注释值,这是注释数组).



1> SLaks..:

您必须创建自己的序列化程序来检测Question(和其他类)并将它们序列化为构造函数调用而不是JSON对象表示法.请注意,您需要一种将对象映射到构造函数调用的方法.(哪些属性来自哪些参数?)

其他人:通过类,他意味着用作构造函数的函数; 我认为他正试图保留原型.

推荐阅读
贴进你的心聆听你的世界
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有