Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将业务对象序列化为JSON_Javascript_Json_Domain Driven Design_Business Objects - Fatal编程技术网

Javascript 将业务对象序列化为JSON

Javascript 将业务对象序列化为JSON,javascript,json,domain-driven-design,business-objects,Javascript,Json,Domain Driven Design,Business Objects,我试图将我的业务对象序列化为JSON,供Javascript应用程序使用。问题是,我试图保持我的业务对象“纯粹”,因为它们不知道数据访问或持久性。在我看来,用toJSON()函数“稀释”我的对象会违背这一目标。另一方面,使用外部对象序列化业务对象将不起作用,因为我将所有实例变量都保持私有 我是不是完全错了?如果实例变量是私有的,那么它们不应该出现在发送到JavaScript应用程序的序列化中。根据定义,如果要序列化它们并将它们发送到单独的应用程序,则它们是公共的。因此,外部对象应该有某种方式来访

我试图将我的业务对象序列化为JSON,供Javascript应用程序使用。问题是,我试图保持我的业务对象“纯粹”,因为它们不知道数据访问或持久性。在我看来,用toJSON()函数“稀释”我的对象会违背这一目标。另一方面,使用外部对象序列化业务对象将不起作用,因为我将所有实例变量都保持私有


我是不是完全错了?

如果实例变量是私有的,那么它们不应该出现在发送到JavaScript应用程序的序列化中。根据定义,如果要序列化它们并将它们发送到单独的应用程序,则它们是公共的。因此,外部对象应该有某种方式来访问它们,可能是通过某种getter方法。

在JSON中对数据进行序列化的目的是什么?这纯粹是为了报道吗?如果是这样,那么Brian是正确的,这些变量应该有getter方法

如果序列化的目的是将数据传输到JavaScript应用程序,在该应用程序中可以对数据进行操作,然后将数据返回到原始应用程序,那么最好创建一个相关的类来实现序列化,同时保持强封装

例如,在Java中,您可以定义一个内部类。内部类实例可以直接访问封闭类实例的所有字段,而不需要getter方法。或者,您可以使用正确的访问修饰符对包(或命名空间)进行分组,以允许序列化程序进行访问,但不允许任何其他类进行访问


或者你可以使用反射。或者劫持toString方法。(或者将其全部展示并创建一个toJson方法。)

您是否考虑从非javascript代码(如服务器端Java)生成JSON?答案在某种程度上取决于此:JSON的处理在Javascript和Java上是完全不同的。在javascript方面已经有了答案,这似乎是正确的

如果这是在Java上,那么有一些库可以提供帮助;例如()可以使用常规的getX/setX方法内省反序列化任何bean;加上附加(可选)注释