我是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,但我仍然无法删除“观察”字和最后的花括号。
答案 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);