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

     2023-02-22     84

关键词:

【中文标题】如何删除嵌套的 JSON.stringify() 属性【英文标题】:How to remove nested JSON.stringify() properties 【发布时间】:2017-08-26 18:05:38 【问题描述】:

我正在尝试使用 Typescript 修改字符串。该字符串由 JSON.stringify() 方法创建。

我想删除 "inputPort" 的属性 "id""lightStatus""value" 属性“输出端口”。 (我只需要他们的属性“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

结果应包括属性“name”、“inputPort id”、“outputPort id”和“resistance”。像这样:

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

谁能帮助我如何摆脱不必要的属性?

【问题讨论】:

什么是预期的 json 数据以及您从响应中得到什么。更新清楚。 @Aravind 我添加了预期的输出。到目前为止我得到的结果不包括我想要的“inputPort”和“outputPort”。 【参考方案1】:

您可以传递一个“替换器”函数来返回您想要的确切值。

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":
    	return v
    case "inputPort": case "outputPort":
    	return v.id
    default:
    	return undefined;
  
, 2)

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

"" 代表***对象。为此,"name""resistance",它只是返回原始值。

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

其他任何东西都会得到undefined,这意味着它会从结果中被忽略。

【讨论】:

【参考方案2】:

您可以为此使用替换函数。

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

【讨论】:

【参考方案3】:

你可以申请JSON.stringifyReplacer功能

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

【讨论】:

嵌套对象上的 JSON.stringify 忽略嵌套对象

】嵌套对象上的JSON.stringify忽略嵌套对象【英文标题】:JSON.stringifyonnestedobjectignoresnestedobjects【发布时间】:2014-05-0613:21:25【问题描述】:我正在生成一个对象,当您使用Chrome检查它时,它看起来像这样:当我尝试使用JSON.stringif... 查看详情

JSON Stringify 忽略 Redis 发布上的嵌套对象

】JSONStringify忽略Redis发布上的嵌套对象【英文标题】:JSONStringifyignoresnestedobjectsonRedispublish【发布时间】:2019-10-1420:37:55【问题描述】:我在后端使用Redis来扩展订阅。我正在使用this库在我的javascript代码之上实现redis。并使用猫... 查看详情

如何 JSON.stringify 对象数组

】如何JSON.stringify对象数组【英文标题】:HowtoJSON.stringifyanarrayofobjects【发布时间】:2016-05-0700:44:08【问题描述】:我正在尝试JSON.stringify()以下键/值对,其中值是对象数组。varstring=JSON.stringify(onlineUsers:getUsersInRoom(users,room));这是... 查看详情

如何获取 JSON stringify 的错误消息?

】如何获取JSONstringify的错误消息?【英文标题】:HowtogettheerrormessageforJSONstringify?【发布时间】:2016-06-0719:49:33【问题描述】:假设我有一个这样的对象varobj="name":"arun"age当我尝试JSON.stringify(obj)时,我会收到一个错误,因为obj不... 查看详情

qs.stringify、qs.parse、json.stringify的使用和区别

...安装,是一个npm仓库所管理的包。importqsfrom'qs'而qs.stringify()将对象序列化成URL的形式,以&进行拼接。如图qs.parse()将URL解析成对象的形式JSON是正常类型的JSON JSON.stringify同qs.stringify()对比,功能虽然是都是序列化,但是... 查看详情

如何在不获取空对象的情况下进行 JSON.stringify 和 JSON.parse?

】如何在不获取空对象的情况下进行JSON.stringify和JSON.parse?【英文标题】:HowtoJSON.stringifyandJSON.parsewithoutgettinganemptyobject?【发布时间】:2013-05-0518:35:53【问题描述】:我问这个问题的原因是因为我想为我的对象使用LocalStorage。您... 查看详情

如何将 JSON.stringify 显示为 HTML 作为值

】如何将JSON.stringify显示为HTML作为值【英文标题】:HowtodisplayJSON.stringifytoHTMLasvalues【发布时间】:2021-11-2520:52:56【问题描述】:我尝试使用json获取数据,并且它按我的意愿工作。但问题是如何在我的页面或HTML上显示它?我得到... 查看详情

JSON.stringify 的反转?

】JSON.stringify的反转?【英文标题】:ReverseofJSON.stringify?【发布时间】:2012-06-2516:05:12【问题描述】:我正在对像\'foo\':\'bar\'这样的对象进行字符串处理如何将字符串转回对象?【问题讨论】:请注意,foo:\'bar\'不是有效的JSON(... 查看详情

如何正确使用 JSON.stringify 和 json_decode()

】如何正确使用JSON.stringify和json_decode()【英文标题】:howtouseJSON.stringifyandjson_decode()properly【发布时间】:2013-04-0520:36:46【问题描述】:我试图通过以下方式将多维Javascript数组传递到我网站上的另一个页面:在数组上使用JSON.strin... 查看详情

json.stringify 对象并重命名 json 中的变量

】json.stringify对象并重命名json中的变量【英文标题】:json.stringifyobjectandrenamevariablesinjson【发布时间】:2022-01-2015:29:05【问题描述】:我想序列化一个对象o,它有一个名为a的方法。该对象还包含一个变量,其名称为_a。我现在想... 查看详情

带有缩进的 JSON.Stringify [重复]

】带有缩进的JSON.Stringify[重复]【英文标题】:JSON.Stringifywithintendation[duplicate]【发布时间】:2016-09-1800:29:53【问题描述】:如何格式化一个字符串化的json对象?JSON.stringify(a:\'avalue\',b:\'bvalue\');要输出这个:a:\'valuea\',b:\'valueb\'而... 查看详情

如何在不使用 JSON.stringify 或 JSON.parse 的情况下在 javascript 中克隆数组? [复制]

】如何在不使用JSON.stringify或JSON.parse的情况下在javascript中克隆数组?[复制]【英文标题】:HowtocloneanarrayinjavascriptwithoutusingJSON.stringifyorJSON.parse?[duplicate]【发布时间】:2014-11-0521:10:30【问题描述】:我有一个数组示例fruit。我想将... 查看详情

json.parse()与json.stringify()

JSON.parse()方法用来解析JSON字符串,构造由字符串描述的JavaScript值或对象。提供可选的reviver函数用以在返回之前对所得到的对象执行变换(操作)。语法JSON.parse(text[,reviver])参数text要被解析成JavaScript值的字符串,查看JSON对象学习... 查看详情

json.stringify详解

参考技术A当我们使用JSON.stringify()序列化一个值为JSON字符串,只有JSON安全的值才可以通过JSON.stringify()转换为字符串。那么,什么是JSON安全的值?能够有效用JSON形式表示的任何值。非JSON安全的值,例如:undefined、function和symbol... 查看详情

你如何 JSON.stringify ES6 Map?

】你如何JSON.stringifyES6Map?【英文标题】:HowdoyouJSON.stringifyanES6Map?【发布时间】:2015-05-1901:28:33【问题描述】:我想开始使用ES6Map而不是JS对象,但我被阻止了,因为我不知道如何使用JSON.stringify()和Map。我的键保证是字符串,我... 查看详情

json.parse()与json.stringify()的区别

JSON.parse()与JSON.stringify()的区别JSON.parse()【从一个字符串中解析出json对象】例子://定义一个字符串vardata=‘{"name":"goatling"}‘//解析对象??JSON.parse(data)结果是:?name:"goatling"JSON.stringify()【从一个对象中解析出字符串】vardata={name:‘go... 查看详情

一小时后如何删除本地存储?

...本地存储javascript保存它:localStorage.setItem(\'storedData\',JSON.stringify(data))我只想将该数据保留1小时。因此,如果超过1小时,则数据将被删除我知道要删除这样的数 查看详情

json.stringify()的深度使用

在使用JSON.stringify()对JSON数据进行序列化时1>如果里面的属性是function,则会被忽略constdata={a:‘a‘,fn:funciton(){returntrue}}JSON.stringify(data);//"{"a":"a"}"*******fn属性被忽略了**********2>如果里面的属性的值是undefined,也是会被忽略的constda 查看详情