1. JavaScript / Говнокод #21505

    −53

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 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/

    Запостил: HiNeX, 20 Октября 2016

    Комментарии (22) RSS

    • > static getJsonProperty<T>(target: any, propertyKey: string): IJsonMetaData {
      Это что, в JS уже шаблоны есть? До чего техника дошла... Убийца C++ растёт.
      Ответить
      • показать все, что скрытоне нужно

        на фоне джаваскприта С++ это очень чистый и логичный язык
        Ответить
      • показать все, что скрытоЭто TypeScript, но суть в качестве кода. Например идиотском условии в isPrimitive с использованием !! и одинаковыми проверками. Наименованием getClazz. Венгерской нотацией в имени IJsonMetaData и кучей говна в deserialize о котором я заебусь писать.
        Ответить
        • Другой грязный еврей?
          Ответить
          • Не еврей а жид
            Ответить
            • Чо блядь происходит с моим говнокодом? Какие-то уебки посты пилят, какие-то уебки комменты пишут, половина комментов в накрученных минусах. Админ хуй положил на ресурс чтоле?
              Ответить
              • В мое время такого гейства не было!
                Ответить
                • показать все, что скрытоГейства не было, потому что жидов постреляли всех.
                  А ты - недорезанный пёс.
                  Ответить
                • Лучше вспомни, как тебя армяне шпилили.
                  Ответить
                  • хохлы воевале!
                    Ответить
                    • С моим хуем?
                      Ответить
                    • С клопами?
                      Ответить
                    • "Лицо сионистского Мессии также говорит само за себя: это — лицо ТЕРРОРИСТА, полное ненависти и угрозы."

                      http://govnokod.ru/21491#comment356462
                      Ответить
                • Это не первая Ваша учётка?
                  Если первая, то всё было примерно так же, только писали про Тараса и кавказцев, а минусов было 20-40 вместо 60-1500, просто всё забылось, а говнокод 2013го кажется райским лугом с единорогами.
                  Ответить
                  • К сожалению писать тут я начал лишь в 2015, этим годом датируется первое письмо в моем ящике с восстановлением пароля
                    Ответить
                    • А, точно, 16 сентября, govnokod.ru/18729.
                      Да, спокойное время было, хорошее. В последний год достаточно мало мусорили здесь.
                      Ответить
                      • ранее от гостя помню коментил :) кстати айдишник вроде рядом с вашим, на 300 душ после вас точнее))
                        Ответить
    • показать все, что скрытоVanished
      Ответить
    • показать все, что скрытоVanished
      Ответить
    • показать все, что скрытоПИЗДА ВАШЕМУ САЙТУ!!! АХАХАХАХАХАХА
      Ответить

    Добавить комментарий