使用 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);
我是 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);