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

时间:2017-08-26 17:08:30

标签: javascript json cloudant nosql

我是JSON和Javascript的新手,不得不在Cloudant NoSQL中创建一个表。 因此,我以JSON格式从Weather Company收集了Weather数据并将其发送到Cloudant,但是JSON中有一些数据与我想要创建的表无关。 有没有办法从我使用javascript收到的JSON数据中删除元数据和列名“观察”?

我有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
}

谢谢。

EDIT 我可以使用“delete data.metadata;”删除元数据,其中数据包含JSON,但我仍然无法删除“观察”字和最后的花括号。

3 个答案:

答案 0 :(得分:1)

假设您的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;

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

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