使用json2typescript - 忽略子类的自定义名称

时间:2018-02-16 19:13:21

标签: json angular

我正在使用https://github.com/dhlab-basel/json2typescript反序列化这个相当' criptic' json响应到Typescripts类

{
    "xp": 0,
    "xt": 34000,
    "dl": 
    [
        {
            "p05": 2000.0000000000002  
        },
        {
            "p05": 400.0000000000002
        }
    ],
}

我说过criptic,因为我们需要将这些变量转化为更多的“人类”。 (例如,p05是Price whitout Taxes,或pWoTaxes,以便更好地理解代码) 我正在使用两个类并沿着json2typescript转换器示例:

父:

@JsonObject
export class TheParentClass{
  @JsonProperty("xp", Number) priceX: number= undefined;
  @JsonProperty("xt", Number) externalThing: number= undefined;

  // As shown with the Cities example
  //  @JsonProperty("cities", [City]) cities: City[] = undefined;
  @JsonProperty("dl", [TheChildClass]) lineDetail: TheChildClass[] = undefined;

}

和ChildClass:

@JsonObject
export class TheChildClass{
  @JsonProperty("p05", Number) someBetterNameForThis: number= undefined;
}

因为dl实际上是一个对象数组

当我使用提供的json响应运行此代码时,我收到此错误:

Error: Fatal error in JsonConvert. Failed to map the JSON object to the JavaScript class "Order" because of a type error.

Class property: 
    lineDetail

Expected type: 
    [TheChildClass]

JSON property: 
    dl

JSON type: 
    [object]

所以我把我的定义改为:

@JsonProperty("dl", [Object]) lineDetail: TheChildClass[] = undefined;

它有效。但是TheParentClass丢失了TheChildClass的所有自定义命名属性,使得我的所有组件代码都无用。

  • TheParentClass.lineDetail [0] .someBetterNameForThis返回undefined
  • TheParentClass.lineDetail [0] .p05仍会返回正确的值

此时它可能还没有得到父级的TheChildClass,因为当我试图从json中将它作为[Object]时我做了改变,所以我在TheChildClass上放了一些错误的代码只是为了看怎么了... 令人惊讶的是,当尝试反序列化Parent时,错误被引发,因此正确处理了TheChildClass,但它完全忽略了我为p05变量定义的名称。我没有为实际的父类名创建自定义名称。

为什么不能获得我为p05变量创建的新名称?

0 个答案:

没有答案