如何从变量迭代JSON子节点 - JAVASCRIPT

时间:2014-05-08 15:04:55

标签: javascript php json loops

我有以下JSON:

{
  "82": {
    "name": "Camión",
    "brands": [
      {
        "203": {
          "name": "Chevrolet"
        },
        "85": {
          "name": "Ford",
          "196": "1721",
          "194": "815"
        },
        "221": {
          "name": "Freightliner"
        },
        "222": {
          "name": "International"
        },
        "84": {
          "name": "Iveco"
        },
        "223": {
          "name": "JAC"
        },
        "229": {
          "name": "Kamaz"
        },
        "224": {
          "name": "Kenworth"
        },
        "86": {
          "name": "Mack"
        },
        "225": {
          "name": "Mitsubishi"
        },
        "226": {
          "name": "Pegaso"
        },
        "228": {
          "name": "Volkswagen"
        },
        "227": {
          "name": "Volvo"
        }
      }
    ]
  },
  "78": {
    "name": "Camioneta",
    "brands": [
      {
        "204": {
          "name": "Acura",
          "236": "MDX",
          "235": "RDX"
        },
        "252": {
          "name": "Audi",
          "249": "Q7"
        },
        "153": {
          "name": "BMW",
          "260": "X3",
          "261": "X5",
          "262": "X6"
        },
        "155": {
          "name": "Cadillac",
          "271": "Escalade"
        },
        "210": {
          "name": "Chana",
          "274": "Mini Pick-Up",
          "275": "Pick Up",
          "276": "Super Van"
        },
        "205": {
          "name": "Changhe",
          "279": "Pick Up"
        },
        "154": {
          "name": "Chery",
          "284": "Grand Tiger",
          "156": "Tigo",
          "282": "Van H5"
        },
        "157": {
          "name": "Chevrolet",
          "313": "Avalanche",
          "314": "Blazer",
          "315": "C-10",
          "316": "C-20",
          "317": "C-30",
          "318": "Captiva",
          "319": "Cheyenne",
          "320": "Colorado",
          "158": "Dmax",
          "321": "Expedition",
          "322": "Geo Tracker",
          "323": "Grand Blazer",
          "324": "Grand Vitara",
          "325": "Jimmy",
          "326": "Lumina APV",
          "327": "Luv",
          "328": "Montana",
          "159": "Orlando",
          "329": "Pick Up",
          "330": "S-10",
          "331": "Silverado",
          "332": "Suburban",
          "333": "Super Carry",
          "334": "Tahoe",
          "335": "Trail Blazer",
          "336": "Van",
          "337": "Venture",
          "338": "Vitara",
          "339": "Wagon R",
          "340": "Yukon"
        },
        "356": {
          "name": "Chrysler",
          "357": "Town & Country"
        },
        "358": {
          "name": "Citroën",
          "359": "Berlingo",
          "366": "Jumpy"
        },
        "380": {
          "name": "Daewoo",
          "381": "Damas",
          "382": "Labo",
          "383": "Musso"
        },
        "160": {
          "name": "Dodge",
          "384": "Dakota",
          "161": "RAM",
          "388": "RAM Van"
        },
        "392": {
          "name": "Fiat",
          "393": "Adventure",
          "397": "Ducato",
          "398": "Fiorino",
          "409": "Strada"
        },
        "81": {
          "name": "Ford",
          "414": "Bronco",
          "415": "Club Wagon",
          "422": "Eco Sport",
          "423": "Econoline",
          "424": "Escape",
          "427": "Expedition",
          "428": "Explorer",
          "429": "F-100",
          "430": "F-150",
          "431": "F-250",
          "432": "F-350",
          "433": "F-750",
          "446": "Ranger",
          "448": "Sport Trac",
          "449": "Sport Wagon",
          "453": "Winstart"
        },
        "162": {
          "name": "Great Wall",
          "457": "Deer",
          "458": "Hover",
          "459": "Safe"
        },
        "206": {
          "name": "Hafei",
          "461": "Mini Van",
          "462": "Super Minyi",
          "463": "Zhongyi"
        },
        "207": {
          "name": "Haima",
          "596": "7",
          "465": "Freema"
        },
        "163": {
          "name": "Honda",
          "467": "CR-V",
          "472": "Odyssey",
          "473": "Pilot"
        },
        "164": {
          "name": "Hummer",
          "165": "H1",
          "166": "H2"
        },
        "167": {
          "name": "Hyundai",
          "480": "Galloper",
          "482": "Grace",
          "483": "H1",
          "484": "H100",
          "487": "Santa Fe",
          "488": "Santamo",
          "493": "Tucson",
          "494": "Veracruz"
        },
        "168": {
          "name": "Infiniti",
          "495": "FX"
        },
        "169": {
          "name": "Isuzu",
          "496": "Amigo",
          "497": "Caribe",
          "498": "Rodeo",
          "499": "Trooper"
        },
        "79": {
          "name": "Jeep",
          "121": "Cherokee",
          "503": "CJ",
          "504": "Comanche",
          "505": "Commander",
          "506": "Compass",
          "122": "Grand Cherokee",
          "507": "Llanero",
          "508": "Pick Up",
          "509": "Renegado",
          "510": "Rubicon",
          "511": "Sahara",
          "512": "Wagoneer",
          "513": "Willys",
          "514": "Wrangler"
        },
        "118": {
          "name": "JMC",
          "500": "Pick Up"
        },
        "170": {
          "name": "Kia",
          "197": "Carens",
          "524": "Pregio",
          "525": "Sedona",
          "171": "Sportage"
        },
        "172": {
          "name": "Lada",
          "531": "Niva"
        },
        "173": {
          "name": "Land Rover",
          "534": "Defender",
          "535": "Discovery",
          "536": "Freelander",
          "537": "Range Rover"
        },
        "174": {
          "name": "Lexus",
          "543": "GX",
          "544": "LX",
          "545": "RX"
        },
        "176": {
          "name": "Lincoln",
          "547": "Navigator"
        },
        "177": {
          "name": "Mazda",
          "566": "B-2600",
          "567": "B-4000",
          "568": "BT-50",
          "569": "CX-7",
          "570": "CX-9",
          "571": "MPV",
          "572": "Navajo"
        },
        "178": {
          "name": "Mercedes Benz",
          "582": "Clase G",
          "179": "Clase M"
        },
        "208": {
          "name": "Mercury",
          "586": "Villager"
        },
        "180": {
          "name": "Mitsubishi",
          "609": "Expo",
          "610": "Grandis",
          "611": "L-200 Sportero",
          "612": "L-300",
          "181": "Montero",
          "613": "Outlander",
          "614": "Panel",
          "615": "Space Wagon",
          "616": "Sport Wagon",
          "617": "Star Wagon"
        },
        "182": {
          "name": "Nissan",
          "631": "Armada",
          "627": "Frontier",
          "628": "Murano",
          "629": "Pathfinder",
          "630": "Patrol",
          "632": "Pick Up",
          "633": "Quest",
          "634": "Terrano",
          "635": "X-Terra",
          "636": "X-Trail"
        },
        "193": {
          "name": "Otras Marcas"
        },
        "647": {
          "name": "Peugeot",
          "648": "Expert"
        },
        "183": {
          "name": "Pontiac",
          "654": "Trans Sport"
        },
        "184": {
          "name": "Porsche",
          "660": "Cayenne"
        },
        "185": {
          "name": "Renault",
          "676": "Kangoo",
          "677": "Sandero",
          "678": "Trafic"
        },
        "209": {
          "name": "Saic Wuling",
          "679": "Minivan",
          "680": "Panel",
          "681": "Supervan"
        },
        "187": {
          "name": "Subaru",
          "694": "Forester"
        },
        "188": {
          "name": "Suzuki",
          "695": "Grand Vitara"
        },
        "189": {
          "name": "Tata",
          "699": "Ace"
        },
        "80": {
          "name": "Toyota",
          "190": "4Runner",
          "700": "Autana",
          "701": "Burbuja",
          "702": "FJ Cruiser",
          "703": "FJ-40",
          "704": "Fortuner",
          "705": "Hiace",
          "706": "Highlander",
          "707": "Hilux",
          "191": "Land Cruiser",
          "708": "Macho",
          "709": "Macho Pick Up",
          "199": "Meru",
          "710": "Prado",
          "711": "Previa",
          "712": "RAV-4",
          "713": "Roraima",
          "714": "Samurai",
          "715": "Sequoia",
          "731": "Sienna",
          "716": "Tacoma",
          "718": "Tercel",
          "717": "Terios",
          "719": "Tundra"
        },
        "736": {
          "name": "Tyanye",
          "737": "Pick Up"
        },
        "192": {
          "name": "Volkswagen",
          "753": "Caddy",
          "754": "Kombi",
          "755": "Multivan",
          "756": "Saveiro",
          "757": "Touareg"
        },
        "593": {
          "name": "Zhongxing",
          "594": "Admiral",
          "758": "Grand Tiger"
        },
        "591": {
          "name": "Zotye",
          "592": "Nomada"
        }
      }
    ]
  },
  "71": {
    "name": "Carro",
    "brands": [
      {
        "211": {
          "name": "Acura",
          "233": "Integra",
          "234": "Legend"
        },
        "90": {
          "name": "Alfa Romeo",
          "237": "146",
          "238": "156",
          "239": "Giulieta",
          "240": "Spider"
        },
        "212": {
          "name": "Aston Martin",
          "242": "DBS",
          "241": "Vantage"
        },
        "91": {
          "name": "Audi",
          "243": "90",
          "244": "A3",
          "245": "A4",
          "246": "A5",
          "247": "A6",
          "248": "A8",
          "250": "S4",
          "251": "TT"
        },
        "92": {
          "name": "BMW",
          "265": "320D",
          "253": "Serie 1",
          "255": "Serie 3",
          "256": "Serie 5",
          "257": "Serie 6",
          "258": "Serie 7",
          "259": "Serie 8",
          "263": "Z3",
          "264": "Z4"
        },
        "93": {
          "name": "Buick",
          "266": "Century",
          "267": "Le Sabre",
          "269": "Regal",
          "268": "Riviera"
        },
        "94": {
          "name": "Cadillac",
          "270": "Deville",
          "272": "Fleetwood"
        },
        "95": {
          "name": "Chana",
          "273": "Benni"
        },
        "277": {
          "name": "Changhe",
          "278": "Ideal"
        },
        "77": {
          "name": "Chery",
          "96": "Arauca",
          "280": "Cowin",
          "97": "Orinoco",
          "281": "QQ",
          "283": "X1"
        },
        "72": {
          "name": "Chevrolet",
          "285": "Astra",
          "98": "Aveo",
          "286": "Camaro",
          "287": "Camino",
          "288": "Caprice",
          "289": "Cavalier",
          "290": "Celebrity",
          "291": "Century",
          "292": "Chevette",
          "293": "Chevy",
          "294": "Corsa",
          "295": "Corsica",
          "296": "Corvette",
          "99": "Cruze",
          "297": "Epica",
          "298": "Esteem",
          "299": "Impala",
          "300": "Lumina",
          "301": "Malibu",
          "302": "Meriva",
          "303": "Monte Carlo",
          "304": "Monza",
          "305": "Nova",
          "306": "Optra",
          "307": "Ranchero",
          "308": "Sierra",
          "309": "Spark",
          "310": "Sunfire",
          "311": "Swift",
          "312": "Vectra"
        },
        "100": {
          "name": "Chrysler",
          "341": "300 C",
          "345": "Coronet",
          "348": "Le Baron",
          "349": "Neon",
          "350": "New Yorker",
          "351": "PT Cruiser",
          "353": "Sebring",
          "354": "Spirit",
          "355": "Stratus"
        },
        "101": {
          "name": "Citroën",
          "360": "C2",
          "361": "C3",
          "362": "C4",
          "365": "Pluriel",
          "363": "Xsara",
          "364": "Xsara Picasso"
        },
        "102": {
          "name": "Corvette",
          "367": "Corvette"
        },
        "103": {
          "name": "Daewoo",
          "368": "Chairman",
          "369": "Cielo",
          "370": "Espero",
          "371": "Lanos",
          "372": "Leganza",
          "373": "Matiz",
          "374": "Nubira",
          "375": "Prince",
          "376": "Racer",
          "377": "Super Saloon",
          "378": "Tacuma",
          "379": "Tico"
        },
        "104": {
          "name": "Dodge",
          "342": "Brisa",
          "105": "Caliber",
          "344": "Charger",
          "385": "Dart",
          "346": "Grand Caravan",
          "347": "Intrepid",
          "386": "Journey",
          "387": "Neon"
        },
        "106": {
          "name": "Ferrari",
          "389": "F40",
          "390": "F430"
        },
        "107": {
          "name": "Fiat",
          "391": "147",
          "394": "Brava",
          "395": "Coupe",
          "396": "Croma",
          "399": "Idea",
          "400": "Marea",
          "401": "Mirafiori",
          "198": "Palio",
          "402": "Premio",
          "403": "Punto",
          "404": "Regatta",
          "405": "Ritmo",
          "406": "Siena",
          "407": "Spazio",
          "408": "Stilo",
          "410": "Tempra",
          "411": "Tipo",
          "412": "Tucan",
          "413": "Uno"
        },
        "73": {
          "name": "Ford",
          "416": "Cobra",
          "417": "Conquistador",
          "418": "Corcel",
          "419": "Cougar",
          "420": "Crown Victoria",
          "421": "Del Rey",
          "425": "Escort",
          "426": "Excursion",
          "434": "Fairline",
          "435": "Festiva",
          "108": "Fiesta",
          "109": "Focus",
          "110": "Fusion",
          "436": "Galaxie",
          "437": "Granada",
          "438": "Grand Marquis",
          "439": "Ka",
          "441": "Laser",
          "440": "LTD",
          "442": "Maverick",
          "443": "Mustang",
          "444": "Probe",
          "445": "Ranchera",
          "447": "Sierra",
          "450": "Taurus",
          "451": "Thunderbird",
          "452": "Zephyr"
        },
        "111": {
          "name": "Geely",
          "454": "CK",
          "455": "HA",
          "456": "MK"
        },
        "112": {
          "name": "Great Wall"
        },
        "213": {
          "name": "Hafei",
          "460": "Lobo"
        },
        "214": {
          "name": "Haima",
          "464": "Family"
        },
        "113": {
          "name": "Honda",
          "466": "Accord",
          "114": "Civic",
          "468": "CR-X",
          "469": "Fit",
          "470": "Integra",
          "471": "Legend",
          "474": "Prelude"
        },
        "115": {
          "name": "Hyundai",
          "475": "Accent",
          "476": "Atos",
          "477": "Azera",
          "478": "Elantra",
          "479": "Excel",
          "481": "Getz",
          "485": "H10",
          "486": "Matrix",
          "489": "Scoupe",
          "490": "Sonata",
          "491": "Tiburon",
          "492": "Verna"
        },
        "119": {
          "name": "Jaguar",
          "501": "S-Type",
          "502": "XJ"
        },
        "76": {
          "name": "Kia",
          "515": "Carens",
          "516": "Carnival",
          "517": "Cerato",
          "518": "Opirus",
          "519": "Optima",
          "520": "Picanto",
          "521": "Rio",
          "522": "Shuma",
          "523": "Spectra",
          "123": "Stylus"
        },
        "124": {
          "name": "Lada",
          "526": "21053",
          "527": "2106",
          "528": "2107",
          "529": "Acuario",
          "530": "Matriska",
          "532": "Samara",
          "533": "Strada"
        },
        "125": {
          "name": "Lexus",
          "538": "ES",
          "539": "GS",
          "540": "IS",
          "541": "LS",
          "542": "SC"
        },
        "126": {
          "name": "Lifan",
          "546": "520"
        },
        "127": {
          "name": "Lincoln",
          "548": "Town Car"
        },
        "128": {
          "name": "Maserati",
          "549": "228",
          "550": "70",
          "551": "Gran Turismo"
        },
        "129": {
          "name": "Mazda",
          "552": "2",
          "553": "323",
          "554": "626",
          "555": "929",
          "556": "Allegro",
          "557": "Demio",
          "130": "Mazda 3",
          "560": "Mazda 5",
          "131": "Mazda 6",
          "561": "Miata",
          "562": "Millenia",
          "558": "MX-3",
          "559": "MX-6",
          "563": "Protege",
          "564": "RX-7",
          "565": "RX-8"
        },
        "132": {
          "name": "Mercedes Benz",
          "133": "Clase A",
          "573": "Clase B",
          "574": "Clase C",
          "575": "Clase CLK",
          "576": "Clase CLS",
          "577": "Clase E",
          "578": "Clase S",
          "579": "Clase SL",
          "581": "Clase SLC",
          "580": "Clase SLK",
          "134": "Mercury"
        },
        "216": {
          "name": "Mercury",
          "583": "Cougar",
          "584": "Grand Marquis",
          "585": "Tracer"
        },
        "217": {
          "name": "Mini",
          "588": "Cooper",
          "587": "Cooper S",
          "589": "Cord",
          "590": "John Cooper Works"
        },
        "75": {
          "name": "Mitsubishi",
          "597": "3000 GT",
          "598": "Colt",
          "599": "Diamante",
          "600": "Eclipse",
          "601": "Evolution",
          "602": "Galant",
          "135": "Lancer",
          "603": "MF",
          "606": "Mirage",
          "604": "MS",
          "605": "MX",
          "607": "Sigma",
          "608": "Signo"
        },
        "136": {
          "name": "Nissan",
          "618": "200 SX",
          "619": "200 ZX",
          "620": "350 Z",
          "621": "Almera",
          "622": "Altima",
          "623": "Lucino",
          "624": "Maxima",
          "625": "Primera",
          "137": "Sentra",
          "626": "Tiida"
        },
        "152": {
          "name": "Otras Marcas"
        },
        "138": {
          "name": "Peugeot",
          "637": "205",
          "638": "206",
          "639": "207",
          "139": "305",
          "640": "306",
          "641": "307",
          "642": "309",
          "643": "405",
          "644": "407",
          "645": "605",
          "646": "607"
        },
        "140": {
          "name": "Pontiac",
          "649": "Fiero",
          "650": "Firebird",
          "651": "Grand AM",
          "652": "Grand Prix",
          "653": "Sunfire"
        },
        "141": {
          "name": "Porsche",
          "655": "911",
          "656": "924",
          "657": "968",
          "658": "Boxster",
          "659": "Cayman"
        },
        "142": {
          "name": "Renault",
          "661": "Clio",
          "662": "Fuego",
          "663": "Gala",
          "664": "Laguna",
          "665": "Logan",
          "666": "Megane",
          "668": "R 11",
          "667": "R 12",
          "669": "R 18",
          "670": "R 19",
          "671": "R 21",
          "672": "R 5",
          "673": "Scenic",
          "674": "Symbol",
          "675": "Twingo"
        },
        "219": {
          "name": "Scion",
          "682": "TC"
        },
        "143": {
          "name": "Seat",
          "683": "Altea",
          "684": "Cordoba",
          "685": "Cupra",
          "686": "Ibiza",
          "144": "Leon",
          "687": "Toledo"
        },
        "145": {
          "name": "Skoda",
          "688": "Fabia",
          "689": "Forman",
          "690": "Octavia"
        },
        "220": {
          "name": "Smart",
          "691": "Passion"
        },
        "146": {
          "name": "Subaru",
          "693": "Impreza",
          "692": "Legacy"
        },
        "147": {
          "name": "Suzuki"
        },
        "148": {
          "name": "Tata",
          "696": "Indica",
          "697": "Indiga",
          "698": "Indigo"
        },
        "74": {
          "name": "Toyota",
          "720": "Avalon",
          "721": "Avensis",
          "89": "Camry",
          "722": "Carina",
          "723": "Celica",
          "87": "Corolla",
          "724": "Cressida",
          "725": "Crown",
          "726": "Echo",
          "728": "Matrix",
          "727": "MR2",
          "730": "Paseo",
          "729": "Picnic",
          "732": "Sky",
          "733": "Solara",
          "734": "Starlet",
          "735": "Supra",
          "88": "Yaris"
        },
        "149": {
          "name": "Volkswagen",
          "738": "Bora",
          "739": "Brasilia",
          "740": "Buggy",
          "151": "Crossfox",
          "741": "Escarabajo",
          "150": "Fox",
          "742": "Gol",
          "743": "Golf",
          "744": "Jetta",
          "745": "New Bettle",
          "746": "Parati",
          "747": "Passat",
          "748": "Polo",
          "749": "Polo Classic",
          "750": "Puma",
          "751": "Spacefox",
          "752": "Vento"
        }
      }
    ]
  },
  "200": {
    "name": "Motos",
    "brands": [
      {
        "231": {
          "name": "Bera",
          "768": "BR",
          "769": "BRZ",
          "777": "BWS",
          "770": "Corvette",
          "771": "DT",
          "774": "Jaguar",
          "767": "Mustang",
          "776": "New Cobra",
          "773": "New Majesty",
          "772": "R1",
          "775": "Runner"
        },
        "810": {
          "name": "BMW",
          "816": "C1",
          "815": "F",
          "817": "FGS",
          "813": "GS",
          "814": "K",
          "818": "KGT",
          "811": "R",
          "812": "X Country"
        },
        "201": {
          "name": "Empire Keeway",
          "766": "Arsen",
          "760": "Horse",
          "761": "Outlook",
          "763": "Owen",
          "202": "RKV 200",
          "765": "Speed",
          "764": "Super Shadow",
          "762": "Superlight",
          "759": "TX"
        },
        "232": {
          "name": "Skygo",
          "787": "Elegance",
          "781": "Executive",
          "784": "Flash",
          "782": "Fly Dragon",
          "786": "Force",
          "778": "Freedom",
          "783": "Paseo",
          "785": "Scorpion",
          "779": "SG",
          "780": "Spirit"
        },
        "800": {
          "name": "Suzuki",
          "801": "DR",
          "804": "EN",
          "809": "Freewind",
          "803": "GN",
          "802": "GSX",
          "806": "Hayabusa",
          "807": "Intrude",
          "808": "SV",
          "805": "V-Strom"
        },
        "788": {
          "name": "Yamaha",
          "790": "Artistic",
          "789": "DT",
          "796": "Fazer",
          "795": "R6",
          "792": "RX100",
          "794": "RXZ",
          "793": "V-Max",
          "791": "WR",
          "799": "XJ",
          "797": "XTR",
          "798": "YT"
        }
      }
    ]
  },
  "2": {
    "name": "Otros",
    "brands": [
      {}
    ]
  }
}

并且,例如,我收到了" 82"来自onchange事件。

我想迭代顶级json级别并匹配82.在此之后,我必须迭代他们的孩子并打印"品牌"内容。

我怎样才能像#" foreach"在PHP?。

问候。

2 个答案:

答案 0 :(得分:1)

基于对象和数组结构的准确迭代是这样的:

var my82 = data['82'];
var brands = my82['brands'];
for (var item in brands[0]) {
    console.log(brands[0][item].name);
}

结果:

Iveco

福特

麦克

雪佛兰

Freightliner

国际

JAC

Kenworth

三菱

Pegaso

沃尔沃

大众汽车

Kamaz

它将在控制台上打印品牌名称。我希望它有所帮助。

答案 1 :(得分:0)

for (var key in json) {
    if (!json.hasOwnProperty(key)) {
        continue;
    }
    // loop body
}

hasOwnProperty部分可能并不总是完全必要,但在某些情况下会出现除预期键之外的其他内容,例如,如果库已将原型方法添加到Object类型中。它有时会有所帮助。