从 JavaScript 中的 json 获取值
Getting values from json in JavaScript
如果我有这样的 json:
{
"dcf93893d83e4f28953f140b9cba1963":{
"foo":{
"client":"127.0.0.1",
"id":"31971",
"start time":1654131724.160335
},
"bar":{
"client":"127.0.0.1",
"id":"23456",
"start time":1654131900.997766
}
}
}
我想出了如何像这样循环它:
for (var key in json) {
if (json.hasOwnProperty(key)) {
console.log(json[key])
}
}
如何遍历每个子元素(在本例中为 foo 和 bar)然后获取一个键,例如 id?
客户端、id 和开始时间是唯一已知的键名
预期输出:
31971
23456
编辑:json 来自 fetch:
setInterval(function () {
fetch(<url>)
.then(function (response) {
return response.json();
})
.then(function (json) {
for (var key in json) {
if (json.hasOwnProperty(key)) {
console.log(json[key])
}
}
})
}, 2000);
再做一个循环并通过键名获取内部值:
const json = {
"dcf93893d83e4f28953f140b9cba1963":{
"foo":{
"client":"127.0.0.1",
"id":"31971",
"start time":1654131724.160335
},
"bar":{
"client":"127.0.0.1",
"id":"23456",
"start time":1654131900.997766
}
}
}
for (var key in json) {
if (json.hasOwnProperty(key)) {
//console.log(json[key])
for(var key2 in json[key]) {
console.log(json[key][key2]["id"])
}
}
}
你必须在每个循环中循环。并将每个 id 保存到一个数组中。
var ids = []
for (var key in json) {
if (json.hasOwnProperty(key)) {
for(var obj in json[key]) {
if (obj.id) ids.push(obj.id)
}
}
}
无需迭代,您可以使用 Object.values()
, and map those accordingly using flatMap()
and map()
:
获取对象的值
const data = {
"dcf93893d83e4f28953f140b9cba1963": {
"foo": {
"client": "127.0.0.1",
"id": "31971",
"start time": 1654131724.160335
},
"bar": {
"client": "127.0.0.1",
"id": "23456",
"start time": 1654131900.997766
}
}
};
const result = Object.values(data)
.flatMap(v => Object.values(v)).map(({id}) => id);
console.log(result);
如果我有这样的 json:
{
"dcf93893d83e4f28953f140b9cba1963":{
"foo":{
"client":"127.0.0.1",
"id":"31971",
"start time":1654131724.160335
},
"bar":{
"client":"127.0.0.1",
"id":"23456",
"start time":1654131900.997766
}
}
}
我想出了如何像这样循环它:
for (var key in json) {
if (json.hasOwnProperty(key)) {
console.log(json[key])
}
}
如何遍历每个子元素(在本例中为 foo 和 bar)然后获取一个键,例如 id?
客户端、id 和开始时间是唯一已知的键名
预期输出:
31971
23456
编辑:json 来自 fetch:
setInterval(function () {
fetch(<url>)
.then(function (response) {
return response.json();
})
.then(function (json) {
for (var key in json) {
if (json.hasOwnProperty(key)) {
console.log(json[key])
}
}
})
}, 2000);
再做一个循环并通过键名获取内部值:
const json = {
"dcf93893d83e4f28953f140b9cba1963":{
"foo":{
"client":"127.0.0.1",
"id":"31971",
"start time":1654131724.160335
},
"bar":{
"client":"127.0.0.1",
"id":"23456",
"start time":1654131900.997766
}
}
}
for (var key in json) {
if (json.hasOwnProperty(key)) {
//console.log(json[key])
for(var key2 in json[key]) {
console.log(json[key][key2]["id"])
}
}
}
你必须在每个循环中循环。并将每个 id 保存到一个数组中。
var ids = []
for (var key in json) {
if (json.hasOwnProperty(key)) {
for(var obj in json[key]) {
if (obj.id) ids.push(obj.id)
}
}
}
无需迭代,您可以使用 Object.values()
, and map those accordingly using flatMap()
and map()
:
const data = {
"dcf93893d83e4f28953f140b9cba1963": {
"foo": {
"client": "127.0.0.1",
"id": "31971",
"start time": 1654131724.160335
},
"bar": {
"client": "127.0.0.1",
"id": "23456",
"start time": 1654131900.997766
}
}
};
const result = Object.values(data)
.flatMap(v => Object.values(v)).map(({id}) => id);
console.log(result);