2016-12-13 4 views
5

В моем коде вся информация из строки таблицы Postgres стробируется, когда выбран конкретный идентификатор строки.Скрыть нулевые значения на выходе из JSON.stringify()

var jsonRes = result.message.rows; 

document.getElementById('panel').innerHTML = '<pre>' + JSON.stringify(jsonRes[0], null, "\t") + '</pre>' 

Результат выглядит примерно так:

{ 
    "ogc_fid": 143667, 
    "relkey": 288007, 
    "acct": "000487000A0010000", 
    "recacs": "12.5495 AC", 
    "shape_star": 547131.567383, 
    "shape_stle": 3518.469618, 
    "objectid": 307755, 
    "zone_dist": "MU-3", 
    "pd_num": null, 
    "council_da": null, 
    "long_zone_": "MU-3", 
    "globalid": "{D5B006E8-716A-421F-A78A-2D71ED1DC118}", 
    "ord_num": null, 
    "notes": null, 
    "res_num": null, 
    "effectived": 1345766400000, 
    "shape.star": 629707.919922, 
    "shape.stle": 3917.657332, 
    "case_numbe": null, 
    "common_nam": null, 
    "districtus": null 
} 

Я новичок в JS, и хотел бы знать, если может быть простой способ, чтобы полностью исключить столбцы, содержащие нулевые значения - функция, примерно выглядит следующим образом:

function hide(jsonObject) { 
    if (property === null) { 
     hide property 
    } else { 
     return str 
    } 
} 

Так что, в конце концов, объект в панели выглядит следующим образом:

{ 
    "ogc_fid": 143667, 
    "relkey": 288007, 
    "acct": "000487000A0010000", 
    "recacs": "12.5495 AC", 
    "shape_star": 547131.567383, 
    "shape_stle": 3518.469618, 
    "objectid": 307755, 
    "zone_dist": "MU-3", 
    "long_zone_": "MU-3", 
    "globalid": "{D5B006E8-716A-421F-A78A-2D71ED1DC118}", 
    "effectived": 1345766400000, 
    "shape.star": 629707.919922, 
    "shape.stle": 3917.657332 
} 
+0

Где запрос, который извлекает набор результатов? –

+0

Какая версия javascript тоже, или узел? –

+0

это тоже узел: var url = '/ api/parcels /' + layerName + '/ parcel /' + parcelKey; makeAjaxRequest (URL, Params = {}) \t \t \t \t .done (функция (результат) { вар jsonRes = result.message.rows; , если (features.length) { // Получить координаты от символа и центрируйте карту по этим координатам map.flyTo ({center: e.lngLat}); console.log (e.lngLat); } ' –

ответ

7

Вы можете сделать что-то вроде этого:

function replacer(key,value) 
 
{ 
 
    if (value === null) return undefined 
 
    return value 
 
} 
 

 
var x = { 
 
    'x1':0, 
 
    'x2':null, 
 
    'x3':"xyz", 
 
    'x4': null, 
 
    'x5': null 
 
}; 
 
console.log(x) 
 
console.log(JSON.stringify(x, replacer));

0

Попробуйте это:

function getCleanObject(jsonObject) { 
    var clone = JSON.parse(JSON.stringify(jsonObject)) 
    for(var prop in clone) 
     if(clone[prop] == null) 
      delete clone[prop]; 
    return JSON.stringify(clone); 
} 
-1

Если вы хотите сохранить свой первоначальный объект, который вы можете создать новый, как этого

var object = { 
 
    "ogc_fid": 143667, 
 
    "relkey": 288007, 
 
    "acct": "000487000A0010000", 
 
    "recacs": "12.5495 AC", 
 
    "shape_star": 547131.567383, 
 
    "shape_stle": 3518.469618, 
 
    "objectid": 307755, 
 
    "zone_dist": "MU-3", 
 
    "pd_num": null, 
 
    "council_da": null, 
 
    "long_zone_": "MU-3", 
 
    "globalid": "{D5B006E8-716A-421F-A78A-2D71ED1DC118}", 
 
    "ord_num": null, 
 
    "notes": null, 
 
    "res_num": null, 
 
    "effectived": 1345766400000, 
 
    "shape.star": 629707.919922, 
 
    "shape.stle": 3917.657332, 
 
    "case_numbe": null, 
 
    "common_nam": null, 
 
    "districtus": null 
 
    }; 
 

 
    var newObj = {}; 
 

 
    Object.keys(object).forEach(function(key) { 
 
    if (object[key] !== null) 
 
     newObj[key] = object[key]; 
 
    }); 
 
    console.log(newObj);

+0

Почему downvote? – Weedoze

1

Спасибо за ответы. Я просто понял, что JSON.stringify() имеет REPLACER параметр (info here)

Так что я только что добавили:

function replacer(key, value) { 
    // Filtering out properties 
    if (value === null) { 
    return undefined; 
    } 
    return value; 
} 

document.getElementById('panel').innerHTML = 
    '<pre>' + 
    JSON.stringify(jsonRes[0], replacer, "\t") + 
    '</pre>' 
; 
Смежные вопросы