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?
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
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');
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, "\"\"");
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)