web-dev-qa-db-fra.com

Remplacer les valeurs NULL par des valeurs vides dans un OBJET JSON

Bonjour, j'ai un objet JSON fourni par une requête ajax.

Certaines des valeurs du json apparaissent sous la forme null, mais je veux plutôt un empty String

Mon échantillon de code: 

$.post("/profil_process/wall/preview-post.php",param, function (data){
    // this does not work
    JSON.stringify(data, function(key, value) { return value === "" ? "" : value });
    $('#previewWall').html(getPostWall(data.type,data.titre,data.url,data.description,data.media,data.photo_auteur,data.nom_auteur,data.url_auteur,data.date_publication)).fadeIn();
    $(".bouton-vertM").show();
    $("#wLoader").hide();
},'json');

Des idées?

10
Anthony

Votre fonction devrait être comme ça: 

function (key, value) {
    return (value == null) ? "" : value
}

Vérifie les valeurs null et undefined et renvoie une chaîne vide

19
Amin Abu-Taleb

Voici comment vous devriez le faire, en remplaçant les valeurs des objets par des chaînes vides, sans les chaîner

$.post("/profil_process/wall/preview-post.php",param, function (data){

    (function removeNull(o) {
        for(var key in o) {
            if( null === o[key] ) o[key] = '';
            if ( typeof o[key] === 'object' ) removeNull(o[key]);
        }
     })(data);

     $('#previewWall').html(
          getPostWall(
              data.type,
              data.titre,data.url,
              data.description,
              data.media,
              data.photo_auteur,
              data.nom_auteur,
              data.url_auteur,
              data.date_publication
          )  // ^^^ why not just pass the entire object ?
    ).fadeIn();

    $(".bouton-vertM").show();
    $("#wLoader").hide();

},'json');
7
adeneo

Si vous pouvez remplacer NULL-S par des chaînes vides sur une chaîne sérialisée, procédez comme suit:

JSON.stringify(data).replace(/null/i, "\"\""); 
5
gradosevic

Pour ceux qui cherchent encore une solution. 

Utilisé dans mon application angulaire 2 pour supprimer toutes les valeurs nulles renvoyées par ma requête de base de données.

Créer une fonction angulaire 2 dans le composant

    replacer(i, val) {
     if ( val === null ) 
     { 
        return ""; // change null to empty string
     } else {
        return val; // return unchanged
     }
    }

Ou fonction javascript

    function replacer(i, val) {
     if ( val === null ) 
     { 
        return ""; // change null to empty string
     } else {
        return val; // return unchanged
     }
    }

Puis utilisez la fonction dans la méthode JSON.stringify

    JSON.stringify(result, this.replacer)
0
Moshood Aminu