Javascript 如何获取根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

我试图获取Json的每个节点中的元素数。 例如,在这种情况下:

{
  "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”},