- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
class MapUtils {
static isPrimitive(obj) {
switch (typeof obj) {
case "string":
case "number":
case "boolean":
return true;
}
return !!(obj instanceof String || obj === String ||
obj instanceof Number || obj === Number ||
obj instanceof Boolean || obj === Boolean);
}
static getClazz(target: any, propertyKey: string): any {
return Reflect.getMetadata("design:type", target, propertyKey)
}
static getJsonProperty<T>(target: any, propertyKey: string): IJsonMetaData {
return Reflect.getMetadata(jsonMetadataKey, target, propertyKey);
}
static deserialize<T>(clazz:{new(): T}, jsonObject) {
if ((clazz === undefined) || (jsonObject === undefined)) return undefined;
let obj = new clazz();
Object.keys(obj).forEach((key) => {
let propertyMetadataFn:(IJsonMetaData) => any = (propertyMetadata)=> {
let propertyName = propertyMetadata.name || key;
let innerJson = undefined;
innerJson = jsonObject ? jsonObject[propertyName] : undefined;
let clazz = MapUtils.getClazz(obj, key);
if (!MapUtils.isPrimitive(clazz)) {
return MapUtils.deserialize(clazz, innerJson);
} else {
return jsonObject ? jsonObject[propertyName] : undefined;
}
};
let propertyMetadata:IJsonMetaData = MapUtils.getJsonProperty(obj, key);
if (propertyMetadata) {
obj[key] = propertyMetadataFn(propertyMetadata);
} else {
if (jsonObject && jsonObject[key] !== undefined) {
obj[key] = jsonObject[key];
}
}
});
return obj;
}
}
Учимся кодить правильно: http://cloudmark.github.io/Json-Mapping/
1024-- 20.10.2016 19:12 # 0
Это что, в JS уже шаблоны есть? До чего техника дошла... Убийца C++ растёт.
barop 20.10.2016 21:08 # −69
на фоне джаваскприта С++ это очень чистый и логичный язык
1024-- 21.10.2016 02:45 # 0
Ну вот видите, таки убил!
guest 21.10.2016 14:48 # −15
HiNeX 22.10.2016 15:02 # −5
NotLinoleum 22.10.2016 15:03 # +1
Alexander 22.10.2016 15:04 # 0
HiNeX 22.10.2016 15:07 # −3
HiNeX 22.10.2016 15:07 # −3
blackray 22.10.2016 15:10 # −64
А ты - недорезанный пёс.
crashtua 22.10.2016 15:12 # −1
HiNeX 22.10.2016 15:13 # 0
guest 22.10.2016 15:20 # −1
guest 22.10.2016 15:20 # +2
HAPKOMAH 23.10.2016 00:08 # 0
http://govnokod.ru/21491#comment356462
1024-- 23.10.2016 03:49 # 0
Если первая, то всё было примерно так же, только писали про Тараса и кавказцев, а минусов было 20-40 вместо 60-1500, просто всё забылось, а говнокод 2013го кажется райским лугом с единорогами.
HiNeX 23.10.2016 06:38 # 0
1024-- 23.10.2016 06:58 # +1
Да, спокойное время было, хорошее. В последний год достаточно мало мусорили здесь.
HiNeX 23.10.2016 07:00 # 0
voodoodal16 22.10.2016 16:47 # −64
voodoodal16 22.10.2016 19:37 # −63
guestinho 22.10.2016 19:43 # −64