Javascript 如何获取根json元素中的元素数
我试图获取Json的每个节点中的元素数。 例如,在这种情况下:Javascript 如何获取根json元素中的元素数,javascript,json,Javascript,Json,我试图获取Json的每个节点中的元素数。 例如,在这种情况下: { "tickets": { "use": "Valida", "useagain": "Valida di nuovo", "usetitle": "Convalida biglietto", "price": "Prezzo" }, "fares": { "nofarestopurchase": "Non è possibile acquistare biglietti per
{
"tickets": {
"use": "Valida",
"useagain": "Valida di nuovo",
"usetitle": "Convalida biglietto",
"price": "Prezzo"
},
"fares": {
"nofarestopurchase": "Non è possibile acquistare biglietti per la tratta indicata",
"purchasedcongratulations": "Congratulazioni",
"farepurchased": "Hai acquistato il tuo biglietto. Lo puoi trovare nella sezione",
"mytickets": "I miei biglietti",
"fareguestcard": "Hai ottenuto il tuo biglietto. Lo puoi trovare nella sezione"
},
"quantity": {
"title": "Seleziona il numero di persone:"
}
}
车票包含4种声音,包含4种票价和数量1
如何在javascript中动态获取节点及其内部元素的数量?试试这种方法
Object.keys( obj ).forEach( function(key){
console.log( "It has " + Object.keys(obj[key]).length + " " + key );
});
其中,obj
是对象变量名。试试这种方法
Object.keys( obj ).forEach( function(key){
console.log( "It has " + Object.keys(obj[key]).length + " " + key );
});
其中,
obj
是对象变量名。现代浏览器有一个可以帮助您的Objects.keys
,通常是这样使用的:
Object.keys(jsonArray).length;
现代浏览器有一个
Objects.keys
,它可以帮助您,通常是这样使用的:
Object.keys(jsonArray).length;
您可以在对象上使用
Object.keys()
,以获取其键的数组;然后,使用数组的length
属性查找数组中的键数
因此,如果您的JSON结构是yourJSON
,您可以执行以下操作:
var ticketsNum = Object.keys(yourJSON.tickets).length; // 4
var faresNum = Object.keys(yourJSON.fares).length; // 4
var quantityNum = Object.keys(yourJSON.quantity).length; // 1
对于嵌套数据(如此处所示),您可以轻松编写一个函数,对每个“顶级”键的键/值对进行计数:
您可以在对象上使用
Object.keys()
,以获取其键的数组;然后,使用数组的length
属性查找数组中的键数
因此,如果您的JSON结构是yourJSON
,您可以执行以下操作:
var ticketsNum = Object.keys(yourJSON.tickets).length; // 4
var faresNum = Object.keys(yourJSON.fares).length; // 4
var quantityNum = Object.keys(yourJSON.quantity).length; // 1
对于嵌套数据(如此处所示),您可以轻松编写一个函数,对每个“顶级”键的键/值对进行计数:
也许是这样的:
var ticket = {
"tickets":
{
"use": "Valida",
"useagain": "Valida di nuovo",
"usetitle": "Convalida biglietto",
"price": "Prezzo"
},
"fares":
{
"nofarestopurchase": "Non è possibile acquistare biglietti per la tratta indicata",
"purchasedcongratulations": "Congratulazioni",
"farepurchased": "Hai acquistato il tuo biglietto. Lo puoi trovare nella sezione",
"mytickets": "I miei biglietti",
"fareguestcard": "Hai ottenuto il tuo biglietto. Lo puoi trovare nella sezione"
},
"quantity":
{
"title": "Seleziona il numero di persone:"
}
}
var result = {};
for(prop in ticket) {
if(ticket.hasOwnProperty(prop)) {
result[prop] = { length: Object.keys(ticket[prop]).length };
}
}
console.log(JSON.stringify(result)); // {"tickets":{"length":4},"fares":{"length":5},"quantity":{"length":1}}
也许是这样的:
var ticket = {
"tickets":
{
"use": "Valida",
"useagain": "Valida di nuovo",
"usetitle": "Convalida biglietto",
"price": "Prezzo"
},
"fares":
{
"nofarestopurchase": "Non è possibile acquistare biglietti per la tratta indicata",
"purchasedcongratulations": "Congratulazioni",
"farepurchased": "Hai acquistato il tuo biglietto. Lo puoi trovare nella sezione",
"mytickets": "I miei biglietti",
"fareguestcard": "Hai ottenuto il tuo biglietto. Lo puoi trovare nella sezione"
},
"quantity":
{
"title": "Seleziona il numero di persone:"
}
}
var result = {};
for(prop in ticket) {
if(ticket.hasOwnProperty(prop)) {
result[prop] = { length: Object.keys(ticket[prop]).length };
}
}
console.log(JSON.stringify(result)); // {"tickets":{"length":4},"fares":{"length":5},"quantity":{"length":1}}
你可以试试递归。是的,这有点慢,但可以扩展 出于演示目的,我更新了json以显示嵌套对象
var数据={
“门票”:{
“使用”:“Valida”,
“再次使用”:“Valida di nuovo”,
“usetitle”:“Convalida biglietto”,
“价格”:“Prezzo”
},
“票价”:{
“NoFarestopPurchase”:“不可能按照指示收购biglietti”,
“购买的关联”:“恭喜你”,
“购买的票价”:“我购买了一辆大轿车,我的车是特鲁瓦雷内拉的车”,
“我的票”:“我是miei biglietti”,
“fareguestcard”:“Hai ottenuto il tuo biglietto.Lo puoi trovare nella sezione”
},
“数量”:{
“标题”:“个人数字:
},
“测试”:[1,2,3,4,5],
“测试2”:{
“foo”:{
“a”:1,
“b”:2
}
}
}
函数getCount(对象,结果){
if(typeof(obj)==“object”| | Array.isArray(obj)){
Object.key(obj.forEach)(函数(_key){
返回(功能(键){
if(typeof(obj[key])==“object”| | Array.isArray(obj[key])){
结果=结果|{};
结果[键]={};
结果[key].count=Object.key(obj[key]).length;
Object.key(obj[key]).forEach(函数(k){
getCount(obj[key],result[key]);
});
}
})(_键)
});
}
}
var r={};
getCount(数据,r);
控制台日志(r)代码>您可以尝试递归。是的,这有点慢,但可以扩展
出于演示目的,我更新了json以显示嵌套对象
var数据={
“门票”:{
“使用”:“Valida”,
“再次使用”:“Valida di nuovo”,
“usetitle”:“Convalida biglietto”,
“价格”:“Prezzo”
},
“票价”:{
“NoFarestopPurchase”:“不可能按照指示收购biglietti”,
“购买的关联”:“恭喜你”,
“购买的票价”:“我购买了一辆大轿车,我的车是特鲁瓦雷内拉的车”,
“我的票”:“我是miei biglietti”,
“fareguestcard”:“Hai ottenuto il tuo biglietto.Lo puoi trovare nella sezione”
},
“数量”:{
“标题”:“个人数字:
},
“测试”:[1,2,3,4,5],
“测试2”:{
“foo”:{
“a”:1,
“b”:2
}
}
}
函数getCount(对象,结果){
if(typeof(obj)==“object”| | Array.isArray(obj)){
Object.key(obj.forEach)(函数(_key){
返回(功能(键){
if(typeof(obj[key])==“object”| | Array.isArray(obj[key])){
结果=结果|{};
结果[键]={};
结果[key].count=Object.key(obj[key]).length;
Object.key(obj[key]).forEach(函数(k){
getCount(obj[key],result[key]);
});
}
})(_键)
});
}
}
var r={};
getCount(数据,r);
控制台日志(r)代码>这种方式的问题是,我不知道json将如何构造它file@LeonardoMidolo使用此countKeys
功能,您无需知道密钥名称。不确定这是否有帮助。既然我有了对象,你知道如何访问组件的数量,例如“ticket”?我需要的是根元素和相关的组件数。Object.keys(yourObj).length
,如果我理解您想要的话。对于您给出的示例对象,这将是3。假设您有一个这样的json,我如何获得组件的数量?状态:{“title”:“Il tuo stato”,“tickets”:{“title”:“Biglietto”},这种方式的问题是我不知道json将如何构造它file@LeonardoMidolo使用此countKeys
功能,您无需知道密钥名称。不确定这是否有帮助。既然我有了对象,你知道如何访问组件的数量,例如“ticket”?我需要的是根元素和相关的组件数。Object.keys(yourObj).length
,如果我理解您想要的话。对于您给出的示例对象,这将是3。假设您有一个这样的json,我如何获得组件的数量?状态:{“title”:“Il tuo stato”,“tickets”:{“title”:“Biglietto”},