Рубрики
Без рубрики

Обнаружение типа объекта JSON

Я написал этот универсальный класс утилиты в типографии, чтобы определить тип экземпляра объекта.

Автор оригинала: Faisal.

В C # мы можем использовать тип для определения типа объекта e.g.

if("my string".GetType() == typeof(string))
{
    // This is a string block
}

Чтобы достичь того же на сложном объекте JSON, я написал этот универсальный класс утилиты в Teadercript, чтобы определить тип экземпляра объекта.

export class Mapping {
    /**
     * Checks if the given json object is type of a given instance (class/interface) type.
     * @param jsonObject Object to check.
     * @param instanceType The type to check for the object.
     * @returns true if object is of the given instance type; false otherwise.
     */
    public static isTypeOf(jsonObject: Object, instanceType: { new(): T; }): boolean {
        // Check that all the properties of the JSON Object are also available in the Class.
        const instanceObject = new instanceType();
        for (let propertyName in instanceObject) {
            if (!jsonObject.hasOwnProperty(propertyName)) {
                // If any property in instance object is missing then we have a mismatch.
                return false;
            }
        }
        // All the properties are matching between object and the instance type.
        return true;
    };

    /**
     * Checks if the given json object is type of a given instance (class/interface) type.
     * @param jsonObject Object to check.
     * @param instanceType The type to check for the object.
     * @returns true if object is of the given instance type; false otherwise.
     */
    public static isCollectionTypeOf(jsonObjectCollection: any[], instanceType: { new(): T; }): boolean {
        // Check that all the properties of the JSON Object are also available in the Class.
        const instanceObject = new instanceType();
        for (let jsonObject of jsonObjectCollection) {
            for (let propertyName in instanceObject) {
                if (!jsonObject.hasOwnProperty(propertyName)) {
                    // If any property in instance object is missing then we have a mismatch.
                    return false;
                }
            }
        }
        // All the properties are matching between object and the instance type.
        return true;
    };
}; // End of class: Mapping

Надеюсь, кто-то извлекает выгоду из этого решения 🙌 Happy Coding