Mappage d'objets JSON sur des objets Javascript

Lors de l'utilisation de l'AJAX, j'ai tendance à passer des objets à partir de mon serveur de Javascript dans la forme des objets JSON (aka Javascript). Certaines fonctions au sein de mon Javascript compter sur le type spécifique de l'objet que j'utilise. Par exemple, permet d'utiliser un numéro de téléphone par exemple. J'ai un constructeur:

function PhoneNumber(number, type, isPrimary, contactId, id, className) {
    this.number = number;
    this.type = type;
    this.isPrimary = isPrimary;
    this.contactId = contactId;
    this.id = id;
    this.className = className;
}

Que j'utilise lors de la création d'un numéro de téléphone de l'objet dans mon Javascript. Dans certaines situations, je n'ai pas créer l'objet en JS, je reçois l'objet à partir du serveur de sorte qu'il se présente sous la forme d'un objet générique, avec les mêmes champs. Alors, quand mon code s'appuie sur le type spécifique en utilisant quelque chose comme ceci:

var objType = objArray[i].constructor.name;
var mappedObj;

switch(objType) {
    case 'PhoneNumber':
        currentArray = currentArray.phone;
        //Convert response to javascript object.
        mappedObj = mapPhone(jsonResponse[i]);
        break;
    case 'Email':
        currentArray = currentArray.email;
        mappedObj = mapEmail(jsonResponse[i]);
        break;
    case 'Address':
        currentArray = currentArray.address;
        mappedObj = mapAddress(jsonResponse[i]);
        break;
    case 'Website':
        currentArray = currentArray.website;
        mappedObj = mapWebsite(jsonResponse[i]);
}

Dans cette situation, je vérifie le nom des objets constructeur et de définir certaines variables de ce nom. Si l'objet que j'vérifier le nom sur un JSON à partir du serveur, tout simplement, il me donne un générique de "l'Objet" de la réponse et donc le code ne fonctionne pas. Je contourner ce problème en utilisant une fonction de mappage pour chaque objet, tels que:

function mapPhone(phoneObj) {
    var id = phoneObj.id;
    var contactId = phoneObj.contactId;
    var number = phoneObj.number;
    var type = phoneObj.type;
    var primary = phoneObj.isPrimary;
    var className = phoneObj.className;
    var phoneNumber = new PhoneNumber(number, type, primary, contactId, id, className);
    return phoneNumber;
}

Cela fonctionne bien, mais me semble un peu redondant. Est-ce la meilleure façon de résoudre l'Objet JSON problème, ou est-il une meilleure solution? Je comprends que c'est plus un "Suis-je le faire de la meilleure façon possible" type de question, mais je le répète, ce type de logique CONSTAMMENT dans mon code Javascript et je me dis que je pourrais aussi bien avoir un autre avis ou deux sur si oui ou non ses la bonne façon de le faire avant d'avoir à passer des heures en le fixant droit dans l'avenir.

EDIT: j'ai fini par accepter un jQuery solution parce qu'il m'arrive d'utiliser jQuery dans mon projet. Il y a cependant plusieurs solutions qui a également travaillé pour moi avant que je trouve le jQuery option. Elles n'étaient tout simplement pas aussi propre et efficace.

source d'informationauteur ryandlf