如何删除嵌套的JSON.stringify()属性

问题描述:

我试图用Typescript修改字符串。该字符串由JSON.stringify()方法创建。如何删除嵌套的JSON.stringify()属性

我想删除的属性“ID”“lightStatus”“价值”“inputPort”“outputPort”属性。 (我只需要他们的属性“ID”

console.log(JSON.stringify(this.light)); 
// Results in -> {"id":1,"name":"Light Switch","lightStatus":true,"inputPort":{"id":2,"value":0},"outputPort":{"id":2,"value":false},"resistance":100} 

我试着做下面的方式,但它不承认“inputPort.id”和“outputPort.id”。这就是我想和它导致。

var savedLight = JSON.stringify(this.light, ["name", "inputPort.id", "outputPort.id", "resistance"]); 
// Results in -> {"name":"Light Switch","resistance":100} 

结果应该包含属性“名”,“inputPort ID”,“outputPort id”和“抵抗”。像这样:

{"name":"Light Switch","inputPort": 2, "outputPort": 2, "resistance":100} 

任何人都可以帮助我如何摆脱不必要的属性?

+0

Replacer功能什么是预期的JSON数据,你从响应得到什么。更新清楚。 – Aravind

+0

@Aravind我添加了预期的输出。到目前为止,我得到的结果不包括“输入端口”和“输出端口”,这是我想要的。 – BRsmover

您可以传递一个“replacer”函数,它返回所需的确切值。

var data = {"id":1,"name":"Light Switch","lightStatus":true,"inputPort":{"id":2,"value":0},"outputPort":{"id":2,"value":false},"resistance":100}; 
 

 
var result = JSON.stringify(data, function(k, v) { 
 
    switch (k) { 
 
    case "": case "name": case "resistance": 
 
    \t return v 
 
    case "inputPort": case "outputPort": 
 
    \t return v.id 
 
    default: 
 
    \t return undefined; 
 
    } 
 
}, 2) 
 

 
document.querySelector("pre").textContent = result
<pre></pre>

""表示顶层对象。为此,"name""resistance",它只是返回原始值。

对于"inputPort""outputPort"它返回id属性。

还有其他的获得undefined,这意味着它从结果中被省略。

您可以使用替代功能。

var obj = { 
 
    "id": 1, 
 
    "name": "Light Switch", 
 
    "lightStatus": true, 
 
    "inputPort": { 
 
    "id": 2, 
 
    "value": 0 
 
    }, 
 
    "outputPort": { 
 
    "id": 2, 
 
    "value": false 
 
    }, 
 
    "resistance": 100 
 
}; 
 

 
var stringified = JSON.stringify(obj, function(key, val) { 
 
    if (key === 'id' || key === 'lightStatus') { 
 
    return void(0); 
 
    } 
 
    if (key === 'inputPort' || key === 'outputPort') { 
 
    return val.id; 
 
    } 
 
    return val; 
 
}); 
 

 
console.log(stringified);

你可以申请的JSON.stringify

var data='{"id":1,"name":"Light Switch","lightStatus":true,"inputPort":{"id":2,"value":0},"outputPort":{"id":2,"value":false},"resistance":100}'; 
var json=JSON.parse(data); 

function replacer(i, val) { 
    switch (i) { 
    case "": case "name": case "resistance": 
     return val 
    case "inputPort": case "outputPort": 
     return val.id 
    default: 
     return undefined; 
    } 

} 

console.log(JSON.stringify(json,replacer));