Api
Decorator
- JsonProperty([name]);
name:对应json数据字段,可选,默认使用当前class的字段
- JsonProperty([metadata]);
metaData: property描述元数据
-> name: 对应的json数据字段,可选,默认使用当前class的字段
-> class: 该字段的对应的class,可选,当字段该为为array或者形如number | null时必填
-> converter: 自定义该字段序列化或者反序列化json时的转换器,可选。
-> default: 字段默认值,可选,未填时自动认为该字段为必须字段,如果json中不存在时会导致报错
-> excludeToJson: 表面该字段在序列化时是否需要序列话到json,为true是不序列化,不影响反序列化,可选,默认false。
functions
-
deserialize(Class, json, isArray)
Class: 目标类
json: jsonObject或者jsonArray
isArray: 表明json是数组或者object
returns: 如果json为array,返回对应类的数组,如果json为object,返回对应类的实例。
-
serialize(data, isArray)
data: 待序列化的数据(可以为数组)
returns: data为class的instance时返回json object, data 为array时,返回json array
样例
import { JsonProperty, deserialize, serialize } from '_/lang/jsonMapper';
const j = {
a: 1,
b: "",
c: { d: 3, e: -1 },
cs: [{ d: 4 }, { d: 5 }],
d: 33
}
const jArray = [{
a: 1,
b: "",
c: { d: 3 }
cs: [{ d: 4, e: -2 }, { d: 5, e: 21 }],
d: 33
}, {
a: 11,
b: "22",
c: { d: 33 },
cs: [{ d: 333 }, { d: 533 }],
d: 44
}]
class A {
@JsonProperty()
a: number;
@JsonProperty()
b: string;
@JsonProperty({ excludeToJson: true })
c: B;
@JsonProperty({ class: B })
cs: B[]
@JsonProperty('d')
private md: number;
}
class B {
@JsonProperty()
d: number;
@JsonProperty({ default: 0 })
e: number;
@JsonProperty({ class: Number, default: null })
f: number | null;
}
const a = deserialize(A, j);
const t = deserialize(A, jArray, true);
const aj = serialize(a);
const tj = serialize(t, true);