2016-12-13 29 views
5

Trong mã của tôi, tất cả thông tin từ hàng trong bảng Postgres được xâu chuỗi khi một rowID cụ thể được chọn.Ẩn các giá trị null trong đầu ra từ JSON.stringify()

var jsonRes = result.message.rows; 

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

Kết quả trông giống như sau:

{ 
    "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 
} 

Tôi mới vào JS và muốn biết nếu có thể có một cách đơn giản để loại trừ hoàn toàn các cột chứa giá trị null - một chức năng mà khoảng trông như thế này:

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

Vì vậy mà cuối cùng, các đối tượng trong bảng điều khiển trông như thế này:

{ 
    "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

Truy vấn lấy kết quả ở đâu? –

+0

Phiên bản javascript nào hoặc nút? –

+0

bao gồm cả nút quá 'var url = '/ api/parcels /' + layerName + '/ parcel /' + parcelKey; makeAjaxRequest (url, params = {}) \t \t \t \t .done (function (kết quả) {var jsonRes = result.message.rows; if (features.length) {// Lấy tọa độ từ biểu tượng và căn giữa bản đồ trên các tọa độ đó map.flyTo ({center: e.lngLat}); console.log (e.lngLat); } ' –

Trả lời

7

Bạn có thể làm một cái gì đó như thế này:

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

Hãy thử điều này:

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

Nếu bạn muốn giữ lại đối tượng ban đầu của bạn, bạn có thể tạo một hình mới như thế này

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

Tại sao lại là downvote? – Weedoze

1

Cảm ơn đã trả lời. Tôi chỉ nhận ra rằng JSON.stringify() có một tham số REPLACER (info here)

Vì vậy, tôi chỉ nói thêm:

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>' 
; 
Các vấn đề liên quan