您好我有一个由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');
有什么想法吗?
答案 0 :(得分:19)
你的功能应该是这样的:
function (key, value) {
return (value == null) ? "" : value
}
检查null
和undefined
值并返回空字符串
答案 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;
}
}