使用 JAVASCRIPT 删除不需要的 JSON 数据

Removing unwanted JSON data using JAVASCRIPT

我是 JSON 和 Javascript 的新手,必须在 Cloudant NoSQL 中创建一个 table。 因此,我从气象公司收集了 JSON 格式的天气数据并将其发送给 Cloudant,但 JSON 中有一些数据与我想要创建的 table 无关. 有没有办法从我使用 javascript 收到的 JSON 数据中删除元数据和列名 "observation"?

JSON 我有的数据:

{
  "metadata": {
    "language": "en-US",
    "transaction_id": "1503766402801:1454518918",
    "version": "1",
    "latitude": 12.83,
    "longitude": 77.68,
    "expire_time_gmt": 1503771300,
    "status_code": 200
  },
  "observation": {
    "key": "43295",
    "class": "observation",
    "expire_time_gmt": 1503771300,
    "obs_id": "43295",
    "obs_name": "Bangalore",
    "valid_time_gmt": 1503759600,
    "day_ind": "N",
    "temp": 75,
    "wx_icon": 29
  }
}

JSON我要的数据

{
    "_id": "2e5e0da1f82157dd6f5d381a4c9ff84e",
    "_rev": "1-b7a92ae5f96b051f0add3b26a14543c2",
    "key": "43295",
    "class": "observation",
    "expire_time_gmt": 1503771300,
    "obs_id": "43295",
    "obs_name": "Bangalore",
    "valid_time_gmt": 1503759600,
    "day_ind": "N",
    "temp": 75,
    "wx_icon": 29
}

谢谢。

编辑 我可以使用 "delete data.metadata;" 删除元数据,其中数据包含 JSON,但我仍然无法删除 "observation" 单词和最后的花括号。

假设您的 JSON 已被解析,您可以将所有嵌套对象中的所有键分配给一个新对象。

var myData = {
  "metadata": {
    "language": "en-US",
    "transaction_id": "1503766402801:1454518918",
    "version": "1",
    "latitude": 12.83,
    "longitude": 77.68,
    "expire_time_gmt": 1503771300,
    "status_code": 200
  },
  "observation": {
    "key": "43295",
    "class": "observation",
    "expire_time_gmt": 1503771300,
    "obs_id": "43295",
    "obs_name": "Bangalore",
    "valid_time_gmt": 1503759600,
    "day_ind": "N",
    "temp": 75,
    "wx_icon": 29
  }
}

myData = Object.keys(myData)
    .reduce((res, key) => Object.assign(res, myData[key]), {});

console.log(myData);

您的结果中有一些额外的键。不确定这些来自哪里。

如果有一些额外的属性要删除,您可以使用 delete 删除它们。

["latitude", "longitude"].forEach(k => delete myData[k]);

或者我理解错了。我以为你想要合并。如果您只想要观察对象,则只需将其分配给原始变量即可。

myData = myData.observation;

并添加您想要的任何其他属性。

您可以在发送前创建一个新的 json 对象。使用 lodash 应该是扩展

的简单解决方案
// Assume result has your json data
var wantedJson = _.extend({}, result.observation, result.metadata);

如果你不介意元素的顺序,这是最简单的方法:

var result = {
  "metadata": {
    "language": "en-US",
    "transaction_id": "1503766402801:1454518918",
    "version": "1",
    "latitude": 12.83,
    "longitude": 77.68,
    "expire_time_gmt": 1503771300,
    "status_code": 200
  },
  "observation": {
    "key": "43295",
    "class": "observation",
    "expire_time_gmt": 1503771300,
    "obs_id": "43295",
    "obs_name": "Bangalore",
    "valid_time_gmt": 1503759600,
    "day_ind": "N",
    "temp": 75,
    "wx_icon": 29
  }
}
var myjson = result.observation;
myjson._id = "2e5e0da1f82157dd6f5d381a4c9ff84e",
myjson._rev = "1-b7a92ae5f96b051f0add3b26a14543c2";
console.log(myjson);