javascript - json data to table with multiple headers -
i'm having hard time grasping how done,
i have json file menu card restaurant, , data table since it's menucard has multiple headers (like 'starters', 'main course', 'whisky', ...). contains name , price of every object.
it's not problem parse json, it's more of problem shape table.
this json:
{ "drinks": [ { "beers vessel": [ { "name": "jupiler / 33cl / 50cl" "price": "2.00 / 2.60 / 4.00" }, { "name": "bruges zot blond" "price": "3.50" }, { "name": "extra tap crescent" "price": "4:30" }, { "name": "extra tap" "price": "" } ], "beers bottle": [ { "name": "brugze zot brown" "price": "3.50" }, { "name": "tall hendrik tripel" "price": "4.30" }, { "name": "tall hendrik quadruppel" "price": "4:30" }, { "name": "westmalle dubbel" "price": "3.50" }, { "name": "westmalle tripel" "price": "4:10" }, { "name": "duvel" "price": "3.90" }, { "name": "lindemans kriek 25cl" "price": "3.50" }, { "name": "duchesse de bourgogne" "price": "3.50" }, { "name": "hommelbier" "price": "2.90" }, { "name": "rochefort 10" "price": "4:30" }, { "name": "chimay tripel white" "price": "3.90" }, { "name": "chimay blue" "price": "4:30" }, { "name": "orval" "price": "4:30" }, { "name": "st. bernard abbot" "price": "4:30" }, { "name": "kriek boon 37,5cl" "price": "7:20" }, { "name": "boon geuze 37,5cl" "price": "7:20" }, { "name": "jupiler na" "price": "2:00" }, { "name": "hoegaarden" "price": "2:30" }, { "name": "rodenbach" "price": "2:30" } ], "soft drinks": [ { "name": "coca cola / light / zero" "price": "2.20" }, { "name": "ice tea" "price": "2.20" }, { "name": "perrier 20cl" "price": "2.20" }, { "name": "vittel 25cl / 50cl" "price": "2:20 / 4:40" }, { "name": "san pellegrino 50cl" "price": "4:40" }, { "name": "fanta orange" "price": "2.20" }, { "name": "sprite" "price": "2.20" }, { "name": "gini" "price": "2.20" }, { "name": "schweppes tonic" "price": "2.20" }, { "name": "schweppes agrum" "price": "2.20" }, { "name": "tönisteiner orange" "price": "2.20" }, { "name": "squash (tonic + grapefruit)" "price": "4:40" }, { "name": "tennis (tonic + orange)" "price": "4:40" }, { "name": "fristi" "price": "2.20" }, { "name": "cecemel" "price": "2.20" }, { "name": "cold milk" "price": "2.20" }, { "name": "red bull" "price": "3.50" } ], "fruit": [ { "name": "apple juice" "price": "2:30" }, { "name": "orange juice" "price": "2:30" }, { "name": "grapefruit" "price": "2:30" }, { "name": "multi juice" "price": "2:30" }, { "name": "fresh orange juice" "price": "7.00" }, { "name": "fresh lemon juice" "price": "7.00" }, { "name": "lemon squash" "price": "8:00" } ], "cocktails": [ { "name": "mojito" "price": "8:00" }, { "name": "caipirinha" "price": "8:00" }, { "name": "tequila sunrise" "price": "7:20" }, { "name": "cuba libre" "price": "7:20" } ], "children cocktails": [ { "name": "dragon blood" "price": "2.50" }, { "name": "green potion" "price": "2.50" }, { "name": "smurfs cocktail" "price": "2.50" } ], "appetizers": [ { "name": "sangria fresh fruit" "price": "8:40" }, { "name": "campari fresh fruit" "price": "8:50" }, { "name": "sherru fino" "price": "4:10" }, { "name": "pineau des charentes" "price": "4:10" }, { "name": "kir" "price": "4:20" }, { "name": "ricard" "price": "4.00" }, { "name": "martini white / red / rosado / fiero" "price": "4:50" }, { "name": "martini royal (cava)" "price": "6:50" }, { "name": "aperol spritz" "price": "6:50" }, { "name": "picon vin blac" "price": "7.00" }, { "name": "glass of cava" "price": "5:00" }, { "name": "bottle of cava" "price": "25.00" }, { "name": "piper heidsieck champagne 75cl" "price": "70.00" }, { "name": "champagne pommery brut 37,5cl" "price": "35.00" } ], "spirits": [ { "name": "cognac" "price": "7.00" }, { "name": "grand marnier" "price": "6:00" }, { "name": "cointreau" "price": "6:00" }, { "name": "amaretto disaronno" "price": "5:00" }, { "name": "gin mare" "price": "10.00" }, { "name": "hendrick's gin" "price": "10.00" }, { "name": "gin bombay sapphire" "price": "6:00" }, { "name": "gin monkey 47" "price": "10.00" }, { "name": "vodka russian standard" "price": "5:00" }, { "name": "vodka red bull" "price": "7:50" }, { "name": "tequila patron silver" "price": "8:00" }, { "name": "bacardi blanco" "price": "5:00" }, { "name": "havana 7" "price": "6:00" }, { "name": "sambuca" "price": "5:00" }, { "name": "baileys" "price": "5:00" }, { "name": "limoncello" "price": "4.00" }, { "name": "jägermeister" "price": "4.00" }, { "name": "gin harrier" "price": "4.00" }, { "name": "korenwijn harrier" "price": "5:00" }, { "name": "supplement soda" "price": "2.20" } ], "whiskey": [ { "blended whiskey": [ { "name": "j & b" "price": "5:00" }, { "name": "johnnie walker" "price": "5:00" }, { "name": "jameson" "price": "5:00" } ], "malt whisky": [ { "name": "the macallan 12 years" "price": "9:00" }, { "name": "lagavullin 16 years" "price": "9:00" }, { "name": "talisker 10 years" "price": "9:00" } ], "american whiskey": [ { "name": "jack daniels" "price": "5:00" } ], "name": "supplement soda" "price": "2:00" } ], "house wine": [ { "white": [ { "name", "glass" "price": "3.90" }, { "name": "carafe 25cl / 50cl" "price": "7:30 / 14:40" }, { "name": "bottle 75cl" "price": "22:50" } ], "red": [ { "name", "glass" "price": "3.90" }, { "name": "carafe 25cl / 50cl" "price": "7:30 / 14:40" }, { "name": "bottle 75cl" "price": "22:50" } ], "rose": [ { "name", "glass" "price": "3.90" }, { "name": "carafe 25cl / 50cl" "price": "7:30 / 14:40" }, { "name": "bottle 75cl" "price": "22:50" } ], "chardonnay": [ { "name", "glass" "price": "4:50" }, { "name": "carafe 25cl / 50cl" "price": "9:10 / 16.90" }, { "name": "bottle 75cl" "price": "23.90" } ], "semi-sweet wine": [ { "name", "glass" "price": "4:40" }, { "name": "carafe 25cl / 50cl" "price": "8:10 / 16.90" }, { "name": "bottle 75cl" "price": "22.90" } ] } ], "wine suggestions": [ { "white": [ { "name": "sancerre (sauvignon blanc) dom brochard" "price": "27.00" }, { "name": "santa gloria reserva (chardonnay) chile" "price": "19:00" }, { "name": "candela 1884 (viognier) argentina" "price": "24.50" }, { "name": "muscle (chenin blanc) south africa", "price": "22:50" }, { "name": "chateau des gravieres (semillon / sauvignon)" "price": "20:50" } ], "red": [ { "name": "cotes du rhone rasteau labartalas 2011," "price": "26.00" }, { "name": "santa gloria reserva (carmenere) chile" "price": "24.00" }, { "name": "candela 1884 (malbec) argentina" "price": "24.50" }, { "name": "beaujolais villages pardon" "price": "21:50" } ] } ], "hot drinks": [ { "name": "coffee" "price": "2.50" }, { "name": "small coffee" "price": "2.50" }, { "name": "decaf" "price": "2.50" }, { "name": "cappuccino (whipped cream)," "price": "3.60" }, { "name": "lait russe" "price": "3:10" }, { "name": "hot chocolate (with callebaut)" "price": "3.50" }, { "name": "warm milk" "price": "2.50" }, { "name": "glühwein" "price": "6:00" }, { "name": "irish coffee" "price": "7:50" }, { "name": "french coffee (cognac)" "price": "7:50" }, { "name": "grand marnier coffee" "price": "7:50" }, { "name": "amaretto coffee" "price": "7:50" }, { "name": "tea sachet" "price": "2.50" }, { "name": "loose tea" "price": "3:30" }, { "name": "infusion mint / orchard" "price": "3:30" } ] } ], "to eat": [ { "starters": [ { "name": "soup" "price": "5:00" }, { "name": "shrimp croquettes (4 pieces) salad" "price": "12:50" } ], "main dishes": [ { "name": "steak (with fries , salad)," "subtext": "nature, béarnaise, mushroom or pepper sauce" "price": "22.70" }, { "name": "stew bruges zot (fries , salad)," "price": "19:50" }, { "name": "steak tartare" "price": "18.70" }, { "name": "hamburger" "price": "18.70" }, { "name": "soles (3 pieces)" "price": "23:50" } ], "small dishes": [ { "name": "mixed plate with:" "subtext": "salame di felino, mozzarella balls, sundried tomatoes, cheese cubes, bread , butter." "price": "16:50" }, { "name": "mixed plate (above) fried snacks" "price": "22:50" }, { "name": "assorted fried snacks" "price": "13.80" }, { "name": "deep-fried squid rings" "price": "6.80" }, { "name": "bruschetta (6 pieces)" "price": "9:00" }, { "name": "garlicbread (6 pieces)" "price": "6:00" }, { "name": "serving cheese cubes" "price": "7:50" }, { "name": "serving salami" "price": "8:50" }, { "name": "serving mixed" "price": "8.70" } ], "pasta dishes": [ { "name": "vegetarian spaghetti" "price": "12:50" }, { "name": "spaghetti" "price": "12:50" }, { "name": "children spaghetti" "price": "7.80" }, { "name": "penne arabiata" "price": "12:50" }, { "name": "chili con carne" "price": "12:50" } ], "salads": [ { "name": "goat cheese salad" "price": "17:50" }, { "name": "salad shrimp croquettes" "price": "17:50" }, { "name": "chicken salad" "price": "18:20" }, { "name": "salad chicken, fresh pineapple" "price": "19:20" }, { "name": "salmon salad" "price": "19:20" }, { "name": "cold pasta salad chicken" "price": "17.90" }, { "name": "cold pasta salad salmon" "price": "18.90" } ], "desserts": [ { "name": "sabayon fresh fruit , ice cream" "price": "12.00, 9:50 2 persons" }, { "name": "tiramisu" "price": "5:00" }, { "name": "creme brulee" "price": "6:00" } ], "tea room": [ { "subtext": "14:30 17:30" }, { "ice": [ { "name": "children's ice cream" "price": "3.80" }, { "name": "dame blanche" "price": "8.60" }, { "name": "icecream strawberry" "price": "10.60" }, { "name": "icecream fresh fruit" "price": "10.60" }, { "name": "whipped cream" "price": "1:00" } ], "pancakes / waffles": [ { "name": "sugar" "price": "4.00" }, { "name": "butter" "price": "4:20" }, { "name": "cream" "price": "5:00" }, { "name": "chocolate" "price": "5:50" }, { "name": "mikado" "price": "7.50" }, { "name": "fresh fruit" "price": "10.60" }, { "name": "fresh fruit / ice cream / whipped cream" "price": "12.60" } ] } ] } ] }
i'm open suggestions in javascript , in php.
thanks
may can try simple following :
<?php $json = file_get_contents('json.json'); $data = json_decode($json, true); ?> <table cellspacing="0" cellpadding="10" style="border:1px solid #ddd" width="50%"> <?php foreach($data $cat_name => $category): ?> <tr style="background:#ddd"><td colspan="2"><?php echo $cat_name ?></td></tr> <?php foreach($category $sub_category): ?> <?php foreach($sub_category $entry_name => $entry): ?> <tr style="background:#eee"><td style="padding-left:25px" colspan="2"><?php echo $entry_name ?></td></tr> <?php foreach($entry $e): ?> <tr> <td style="padding-left:35px"><?php echo isset($e['name']) ? $e['name'] : '' ?></td> <td style="padding-left:35px"><?php echo isset($e['price']) ? $e['price'] : '' ?></td> </tr> <?php endforeach; ?> <?php endforeach; ?> <?php endforeach; ?> <?php endforeach; ?> </table>
Comments
Post a Comment