簡體   English   中英

將 null 值替換為 JSON OBJECT 中的空值

[英]Replace null values to empty values in a JSON OBJECT

嗨,我收到了 ajax 請求提供的 JSON object。

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

有任何想法嗎?

你的函數應該是這樣的:

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

如果value空,則返回一個空字符串。

如果您可以用序列化字符串上的空字符串替換 null-s,請執行以下操作:

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

這是您應該如何做,用空字符串替換對象值,而不是將其字符串化

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

對於仍在尋找解決方案的任何人。

在我的 angular 2 應用程序中使用它來刪除我的 db 查詢返回的所有空值。

在組件中創建 angular 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)

我建議您檢查 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

下划線 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:""}

這是一個簡單的代碼,它將所有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 } */

派對遲到了,買嘿/嗬。

下面的 function 與您需要的完全相反,所以只需逆向工程:D

為了在 JSON 中用空格交換空字符串或字符串,我們需要遍歷鍵並檢查值是否包含空字符串。

您可以使用 .trim 方法輕松完成此操作。 我們基本上檢查,如果修剪的字符串的長度(沒有空格)等於 0。如果是這樣,我們將向我們的新 object 添加相同的鍵,但添加一個 null 值。 您還可以刪除修剪調用中的長度並檢查 obj[keys].trim == ''。

      function myFunction(obj){
      const newObj = {}

      for(keys in obj){
      if(obj[keys].trim().length == 0){
      newObj[keys] = null; 
      }
      else{
      newObj[keys] = obj[keys];
      }
   }

   return newObj;

 }

這是在 JS 中執行此操作的正確方法

 let data = { "msg": "Success", "data": [ { "firstName": "Manish", "lastName": "Pal", "age": 23 }, { "firstName": "Deepak", "lastName": "Gupta", "age": null } ], "salary": [ { "id": "1", "type": "SD", "amount": 1000000 }, { "id": "2", "type": "C", "ok": null } ] }; let mainResponse = {}; const replaceNull = (value) => { return (value == null)? "": value } //Parse Json and check for null const removeNullFromJson = (object1, jsonObj) => { for (const [key, value] of Object.entries(object1)) { if (Array.isArray(value)) { jsonObj[key] = []; for (let i = 0; i < value.length; i++) { jsonObj[key].push(removeNullFromJson(value[i], {})) } } else if (typeof value == "object" && value,= null) { jsonObj[key] = removeNullFromJson(value; {}) } else { jsonObj[key] = replaceNull(value). } } return jsonObj } console,log(removeNullFromJson(data, mainResponse))

希望這有幫助

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;
}

您可以通過以下 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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM