将空值替换为JSON OBJECT中的空值

时间:2014-03-05 16:27:55

标签: javascript jquery json

您好我有一个由ajax请求提供的JSON对象。

json中的某些值显示为null,但我想要empty String而不是

我的代码示例:

$.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');

有什么想法吗?

10 个答案:

答案 0 :(得分:19)

你的功能应该是这样的:

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

检查nullundefined值并返回空字符串

答案 1 :(得分:7)

以下是你应该如何做,用空字符串替换对象值,而不是将其字符串化

$.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');

答案 2 :(得分:5)

如果可以在序列化字符串上用空字符串替换null-s,请执行以下操作:

data = JSON.parse(JSON.stringify(data).replace(/\:null/gi, "\:\"\"")); 

答案 3 :(得分:0)

适用于仍在寻找解决方案的任何人。

在我的angular 2应用程序中使用它来删除我的数据库查询返回的所有空值。

在组件中创建角度2函数

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

或Javascript函数

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

然后使用JSON.stringify方法中的函数

    JSON.stringify(result, this.replacer)

答案 4 :(得分:0)

我建议您检查Ajax的返回类型,因为它决定了如何删除null

如果它是字符串,则可以使用它:

data = data.replace(/null/g, '""');  //Stays as string

或者:

data = JSON.parse(data);    // Turns to a JSON object

如果它是json对象,则可以使用此对象:

data = JSON.stringify(data).replace(/null/g, '""');  //Turns to string

答案 5 :(得分:0)

下划线 mapObject 给了我最紧凑的解决方案。这是一个完整的示例:

$ npm install underscore

import _, { map, each } from 'underscore';
var x = {a:null, b:1, c:'c', d:null}
var y = _.mapObject(x, function(val, key) {
            return val || '';
        });
console.log('No nulls:', y)

No nulls: {a:"", b:1, c:"c", d:""}

答案 6 :(得分:0)

这是一个简单的代码,它将所有 null 值转换为空的 string

let myObject = {
  "id":1,
  "name": "Ali",
  "address":null,
  "phone":null,
  "age":22
}
Object.keys(myObject).map(function (key, index) {
                if (myObject[key] == null) {
                    myObject[key] = "";
                }
            });
console.log(myObject); 

// output
/* {
  "id": 1,
  "name": "Ali",
  "address": "",
  "phone": "",
  "age": 22
}  */

答案 7 :(得分:-1)

希望这个帮助

var List = [];


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

jQuery.each(data, function (key, value) {
                List.push({
                    ReportId : value.ReportId,
                    ReportType: CheckNullReturnBlank(value.ReportType),
                    ReportName: CheckNullReturnBlank(value.ReportName),
                    Description : CheckNullReturnBlank(value.Description)
                })
            });   },'json');



function CheckNullReturnBlank(item) {
    return item = (item == null) ? '' : item;
}

答案 8 :(得分:-1)

您可以通过java-script

中的以下代码将空值替换为空
var remove_empty = function ( target ) {
  Object.keys( target ).map( function ( key ) {
    if ( target[ key ] instanceof Object ) {
      if ( ! Object.keys( target[ key ] ).length && typeof target[ key ].getMonth !== 'function') {
        target[ key ] = "";
      }
      else {
        remove_empty( target[ key ] );
      }
    }
    else if ( target[ key ] === null ) {
       target[ key ] = "";
    }
  } );
  return target;
};

您可以阅读有关Object.keys

的更多信息

答案 9 :(得分:-2)

function returnblank(item){
  if(item == null){
    return "";
  }else{
    return item;
  }
}