【问题标题】:angular and turning json data into real objects (and vice-versa)角度并将 json 数据转换为真实对象(反之亦然)
【发布时间】:2019-09-17 10:25:26
【问题描述】:

为了简单起见:

我在 typescript 中定义了具有方法和属性的类(具有大量 getter/setter 逻辑)。然后我检索与此类类匹配的 json 数据。我需要能够将这些 json 对象投影到我的“智能”类中。我知道class transformer,但我想知道这是否真的是做这类事情的首选方法。此外,我打算使用ngrx,所以整个类转换看起来是错误的(服务器到json,json到状态,状态到类?反之亦然?我只是没有看到一个清晰的模式。

任何清晰度表示赞赏。谢谢!

【问题讨论】:

    标签: json angular ngrx class-transformer


    【解决方案1】:

    我所做的几乎与您在一个相当大的应用程序中描述的完全一样。 我正在使用类转换器将 JSON 从 http 调用转换为适当对象的实例,然后使用生成的对象作为存储中的状态(除了我使用的是 Redux 而不是 ngrx)。

    我觉得效果很好。

    我不确定您所说的“服务器到 json,json 到状态,状态到类?反之亦然?”的确切含义。

    对我来说(使用你的术语),它是服务器到 json、json 到类、类到状态 (但状态只是对象的集合,即类实例。即状态 is 对象)。

    如果我需要将状态发送回服务器,那么是的,我通常从存储中提取适当的对象,将它们序列化为 JSON,然后将它们发送到服务器。但是...... Angular HttpClient 会为您进行序列化,因此您通常不必编写该部分,除非您需要一些自定义序列化。

    【讨论】:

    • 嗨!我将其标记为答案只是因为您花时间回答,还因为您说我试图为您做的工作。但我有几个问题。 1. 如果你在将它设置为状态之前去“json to class”,你是不是冒着在 redux 控制之外改变你的状态的风险?属性会改变其他属性吗? 2. json-to-class 是否使用任何库? 3. 我要试一试(在实际尝试之前还有很多工作要做)....你介意我私信联系你,以防我走到死胡同吗?谢谢队友
    • 我所说的 state-to-class 的意思是我读到 redux 不喜欢“智能”对象,所以我认为必须实例化“真实”类(具有属性设置器的类)从商店中选择后。如果您在商店中使用此类课程,那么我也会更有信心这样做。但你明白我的意思吗?
    • 1.不。不知道你想象中会发生什么。如果您真的担心它,我想您可以让减速器进行转换。如果这是您要的,我不会将 JSON 存储在商店中。 2. 是的,正如我所提到的,我正在使用类转换器。欢迎私信我。如果“智能对象”是指具有更改对象状态的方法的对象,那么是的,您可能希望在 reducer 中进行这些状态更改。我通常不存储“智能”对象,但我确实存储具有非字符串、日期和数字属性的对象,因此需要反序列化。
    • 智能我的意思是对象的属性(设置器)可能包含逻辑,例如属性生日,在设置时会更新“年龄”属性。可能还有诸如“calculateAgeFromBidthdate()”之类的方法。所以我不关心对象的结构复杂性,而是关心它可能包含的业务逻辑
    猜你喜欢
    • 2013-08-09
    • 1970-01-01
    • 2011-05-10
    • 1970-01-01
    • 2015-03-05
    • 1970-01-01
    • 1970-01-01
    • 2015-04-26
    • 1970-01-01
    相关资源
    最近更新 更多