【问题标题】:Remove JSON parent element in JavaScript移除 JavaScript 中的 JSON 父元素
【发布时间】:2021-12-01 05:38:04
【问题描述】:

我目前正在尝试使用 javascript 编写应用程序。它从数据库中提取数据,我得到的响应是这样的:

    {
       "values":[
           {
               "name": "Munich",
               "location": "Germany",
               "native_lang": "German",
           },
           {
               "name": "London",
               "location": "England",
               "native_lang": "English",
           },
           {
               "name": "Rome",
               "location": "Italy",
               "native_lang": "Italian",
           }
       ]
    }

但我需要这样的 JSON:

    [
       {
           "name": "Munich",
           "location": "Germany",
           "native_lang": "German",
       },
       {
           "name": "London",
           "location": "England",
           "native_lang": "English",
       },
       {
           "name": "Rome",
           "location": "Italy",
           "native_lang": "Italian",
       }
    ]

如何在我的 JSON 中删除父 values 对象?

【问题讨论】:

  • 这是无效的。如果是数组,则需要[]围绕它。
  • @Barmar 这是 JavaScript。它不区分对象属性访问和数组索引访问。您只需要 [] 时 * 属性名称不是有效的标识符 * 或者,属性名称是表达式的值
  • @DMaster 我不知道你在说什么。我的评论是在有人编辑问题以将对象放入数组之前发表的。

标签: javascript json


【解决方案1】:

基于this post

只需这样做(考虑 json 包含您的 json 的变量):

var key = "values";
var results = json[key];
delete json[key];
json = results;

console.log(json) 将输出以下内容:

 [
           {
               "name": "Munich",
               "location": "Germany",
               "native_lang": "German",
           },
           {
               "name": "London",
               "location": "England",
               "native_lang": "English",
           },
           {
               "name": "Rome",
               "location": "Italy",
               "native_lang": "Italian",
           }
]

但你甚至不必执行上面代码 sn-p 的最后 2 步,你也可以直接使用 results 变量并通过 console.log(results) 获得相同的输出。

【讨论】:

    【解决方案2】:

    简短回答:

    只需像访问 JavaScript 对象一样访问 values 属性。

    长答案:

    您没有发布 JavaScript 代码 sn-p,因此很难给您适当的答案。

    假设你有以下代码:

    const jsonString = getDataFromTheDB()
    const jsonObject = JSON.parse(jsonObject) // still has the "values" layer
    const values = jsonObject.values // what you want, without the "values" layer
    
    // BONUS: Just in case you want to convert the object back to a JSON string but without the "values" layer
    const valuesJSON = JSON.stringify(values, undefined, 2)
    

    【讨论】:

      【解决方案3】:

      您可以获取对象并仅使用数组创建一个新变量。

      var vals = 
      {
         "values":[
             {
                 "name": "Munich",
                 "location": "Germany",
                 "native_lang": "German",
             },
             {
                 "name": "London",
                 "location": "England",
                 "native_lang": "English",
             },
             {
                 "name": "Rome",
                 "location": "Italy",
                 "native_lang": "Italian",
             }
         ]
      }
      
      var arr = vals.values;
      
      console.log(arr);

      【讨论】:

        猜你喜欢
        • 2011-07-15
        • 1970-01-01
        • 2012-02-08
        • 1970-01-01
        • 1970-01-01
        • 2013-10-31
        • 2022-08-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多