我正在使用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的所有自定义命名属性,使得我的所有组件代码都无用。
此时它可能还没有得到父级的TheChildClass,因为当我试图从json中将它作为[Object]时我做了改变,所以我在TheChildClass上放了一些错误的代码只是为了看怎么了... 令人惊讶的是,当尝试反序列化Parent时,错误被引发,因此正确处理了TheChildClass,但它完全忽略了我为p05变量定义的名称。我没有为实际的父类名创建自定义名称。
为什么不能获得我为p05变量创建的新名称?