【问题标题】:How to remove the element from the json structure without its values by javascript?如何通过javascript从json结构中删除没有其值的元素?
【发布时间】:2023-03-27 15:15:02
【问题描述】:

这是我拥有的结构,我从 xml 转换为 json,但现在我不需要根元素以及 element 标签:

{
"root": {
    "batchRequests": [
        {
            "element": {
                "method": "PATCH",
                "url": "url",
                "richInput": {
                    "Error_Message__c": {},
                    "Status__c": "0"
                }
            }
        },
        {
            "element": {
                "method": "PATCH",
                "url": "url",
                "richInput": {
                    "Error_Message__c": {},
                    "Status__c": "0"
                }
            }
        }
    ]
}

我想把它变成这样的结构:

{
"batchRequests": [
    {
        "method": "PATCH",
        "url": "url",
        "richInput": {
            "Error_Message__c": "",
            "Status__c": "0"
        }
    },
    {
        "method": "PATCH",
        "url": "url",
        "richInput": {
            "Error_Message__c": "",
            "Status__c": "1"
        }
    }
]
}

如果可以通过 javascript 进行转换,您能帮我吗?

【问题讨论】:

  • 您也可以像 json = json.root 等一样进行迭代和赋值,但比声明式的方式有点。

标签: javascript json xml


【解决方案1】:

你可以用这一行来做到这一点。

 yourObject = { batchRequests: yourObject.root.batchRequests.map((x) => x.element) }

在这里试试。

var yourObject = {
  "root": {
    "batchRequests": [{
        "element": {
          "method": "PATCH",
          "url": "url",
          "richInput": {
            "Error_Message__c": {},
            "Status__c": "0"
          }
        }
      },
      {
        "element": {
          "method": "PATCH",
          "url": "url",
          "richInput": {
            "Error_Message__c": {},
            "Status__c": "0"
          }
        }
      }
    ]
  }
}

yourObject = { batchRequests: yourObject.root.batchRequests.map((x) => x.element) }

console.log(yourObject);

【讨论】:

  • @MayurTripathi 欢迎。如果此答案对您有用,也许您可​​以将其标记为已接受的答案。
  • 另外,我现在如何在这个新变量中迭代:基于 status_code,我想更新计数器。
  • @MayurTripathi 我不明白你的问题,你可以像这样迭代和访问 status_code。 yourObject.batchRequests.forEach((x) => console.log(x.richInput.Status__c))这是你要找的吗?
【解决方案2】:

如果你的 json 项被称为json:

let result = {batchRequests:[]};
for(let item of json.root.batchRequests){
    result.batchRequests.push(item.element);
}

【讨论】:

    【解决方案3】:
    1. map函数解析batchRequests

      const batchRequests = data1.root.batchRequests.map(el => el.element)

    2. 使用此数据创建新对象:

      const data2 = { batchRequests }

    const data1 = {
      "root": {
        "batchRequests": [
            {
                "element": {
                    "method": "PATCH",
                    "url": "url",
                    "richInput": {
                        "Error_Message__c": {},
                        "Status__c": "0"
                    }
                }
            },
            {
                "element": {
                    "method": "PATCH",
                    "url": "url",
                    "richInput": {
                        "Error_Message__c": {},
                        "Status__c": "0"
                    }
                }
            }
        ]
      }
    }
    
    const batchRequests = data1.root.batchRequests.map(el => el.element)
    
    const data2 = { batchRequests }
    console.log(data2)

    【讨论】:

      猜你喜欢
      • 2017-10-24
      • 2012-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多