Leer un archivo JSON con PHP
En este artículo vamos a ver lo sencillo que es leer un archivo JSON con PHP.
En el ejemplo que vamos a ilustrar vamos a tener un archivo JSON depositado en el servidor en el que tenemos información sobre productos específicos con algunos datos de ejemplo tales como:
- Identificador del producto
- Nombre
- Descripción
- Referencia
- Precio
- Categoría
- Fabricante
- Estado
- Y enlace
El contenido del archivo JSON puede tener un aspecto como el siguiente:
Para leer este tipo de archivos JSON con PHP lo tenemos bastante fácil.
El lenguaje de programación PHP tiene 2 funciones que nos van a ahorrar teclear muchas teclas de código.
Fíjate en la simplicidad del código siguiente que te permite leer un archivo JSON con PHP:
<?php
$data = file_get_contents("data/products.json");
$products = json_decode($data, true);
foreach ($products as $product) {
echo '<pre>';
print_r($product);
echo '</pre>';
}
?>
Tan solo estamos depositando en una variable el contenido del archivo JSON con la función file_get_contents().
Esta función está incluida en el lenguaje de programación PHP y permite transmitir el contenido de un fichero completo a una cadena.
En el parámetro que le estamos pasando a la función file_get_contents() estamos indicando la ruta y nombre del fichero a leer.
En este caso, el archivo JSON de ejemplo lo tenemos depositado en el servidor, justamente en la carpeta data/.
En este parámetro también se puede establecer una url absoluta que contenga el archivo JSON.
A continuación, convertimos esa información en un array con la función json_decode().
Esta función también está disponible en el lenguaje de programación PHP y permite decodificar una cadena de JSON, que es precisamente lo que tenemos en la variable $data después de la llamada a file_get_contents().
A partir de aquí, ya tienes los datos del archivo JSON en un array para poder procesarlos a tu antojo.
En el ejemplo en funcionamiento tan solo estamos imprimiendo en pantalla los elemento del array.
Hay muchas aplicaciones y sistemas en la actualidad que utilizan esta forma para intercambiar información desde sus API’s o sistemas de información.
Todo programador, tarde o temprano acaba enfrentándose a tener que tratar con estos archivos JSON. Espero que este mini tutorial te haya sido útil.
Hay sistemas alternativos para tener almacenada información como por ejemplo los archivos XML que también se utilizan mucho y se pueden emplear para almacenar información más compleja.
¿Conoces otra forma mejor para leer un archivo JSON? No dudes en enviar tu comentario.
Buenas chicos como están. Estoy intentando hacer un marcado de datos estructurados en una web en php pero me da error en el campo name. Este es el codigo:
<a href="» title=»» itemprop=»name»>
Alguien me puede dar una mano. Porfa
Muy clarotu artículo. Gracias
Minor de Artinsoft. todo bien, para que me mande un correo y llamarlo
Hola,
Array
(
[producto] => Maceta Lechuza
[descripcion] => Tamaño mediano.
[precio] => 140
)
Array
(
[producto] => Maceta totem grande
[descripcion] => tamaño grande para dos ejemplares.
[precio] => 530
)
Para poder visualizar la salida del json de esta manera,
1 Manzana 100
2 Plátano 167
3 Pera 820
como seria el foreach
Hola,
De la misma forma que en tutorial. Pero tu array no parece estar formateado como json.
Saludo
hola sabes tengo unas dudas me podrias ayudar con esto por favor como puedo leer parte por parte un archivo .json ten envio un ejemplo del archivo
{
«type»: «FeatureCollection»,
«name»: «prueba 2»,
«crs»: { «type»: «name», «properties»: { «name»: «urn:ogc:def:crs:OGC:1.3:CRS84» } },
«features»: [
{ «type»: «Feature», «properties»: { «id»: 23, «name»: «Union Vecinal N° 23 – La Lajuela», «descrip1»: «La Lajuela», «descrip2»: «La Mina La Lajuela», «fillcolor»: «1a8b9f», «opacity»: 1, «fillopacit»: «0,7», «color»: «fefefe», «descrip3»: «La Pataguilla», «descrip4»: «San Vicente de Paul», «descrip5»: «la Gruta» }, «geometry»: { «type»: «MultiPolygon», «coordinates»: [ [ [ [ -71.38326794394446, -34.640083093176514 ], [ -71.368316546670712, -34.661044020021301 ], [ -71.368515034843242, -34.661770762412452 ], [ -71.368774861374632, -34.662488428440888 ], [ -71.368932687039589, -34.66311028726372 ], [ -71.368821726637591, -34.663659582560747 ], [ -71.368686644409067, -34.664333017027175 ], [ -71.368118058498169, -34.664724150694433 ], [ -71.367359254755272, -34.66536469894411 ], [ -71.365085600306756, -34.666743278024782 ], [ -71.351213482471039, -34.674820428836 ], [ -71.351389916402169, -34.675233050903188 ], [ -71.351632513057496, -34.675923394764943 ], [ -71.352426465747612, -34.675846312320282 ], [ -71.353082579429028, -34.67586444937254 ], [ -71.353032957385892, -34.676485641014715 ], [ -71.353088092989367, -34.677224716971907 ], [ -71.353574664690086, -34.677653196638367 ], [ -71.354037803759326, -34.677820960559913 ], [ -71.35429142753533, -34.677952450963573 ], [ -71.354693917440741, -34.678301579642913 ], [ -71.355373463753637, -34.678684712668534 ], [ -71.354452699175525, -34.678571359887016 ], [ -71.355186002701799, -34.678961292804274 ], [ -71.355009568770669, -34.680001860613274 ], [ -71.355009568770669, -34.680709167214694 ], [ -71.355154299729818, -34.681114958979762 ], [ -71.355286625178181, -34.681341657424049 ], [ -71.35536381502304, -34.681577423147722 ], [ -71.355606411678352, -34.681885731158076 ], [ -71.355789737559917, -34.68229038367955 ], [ -71.355866927404804, -34.682630426286075 ], [ -71.356126064741161, -34.682925128748799 ], [ -71.356545095327618, -34.683233431740973 ], [ -71.357107478483101, -34.683432921300678 ], [ -71.357691915879997, -34.683600673512927 ], [ -71.3582653261562, -34.683691350242903 ], [ -71.359180577173959, -34.683850034281406 ], [ -71.35978431203209, -34.683921441999487 ], [ -71.360776752894736, -34.684016652194501 ], [ -71.361741625955645, -34.68414359895084 ], [ -71.362738201988577, -34.684201404998632 ], [ -71.364359188730887, -34.683874970316936 ], [ -71.36584233646451, -34.683507729761637 ], [ -71.366921615902655, -34.683091748523154 ], [ -71.367996760170541, -34.68232892191179 ], [ -71.368685955214033, -34.681331456007399 ], [ -71.368862389145178, -34.680604885210833 ], [ -71.368774172179613, -34.679661807212071 ], [ -71.368443358558721, -34.678949957570971 ], [ -71.367587378314681, -34.678249437141446 ], [ -71.368767280229164, -34.678471609310911 ], [ -71.369475772733907, -34.678665442706617 ], [ -71.370220103380888, -34.678864943271677 ], [ -71.370694269570819, -34.679404499210385 ], [ -71.371019569631343, -34.679971255864345 ], [ -71.371335220961271, -34.680557278165431 ], [ -71.371660521021809, -34.68135979327279 ], [ -71.372042335075932, -34.682232576297551 ], [ -71.372494447024465, -34.683334310044323 ], [ -71.372909342440664, -34.684237675439348 ], [ -71.373427617113364, -34.685772353903253 ], [ -71.373848026089931, -34.68677656680584 ], [ -71.374245002434989, -34.687739965026594 ], [ -71.374597870297265, -34.688583212620742 ], [ -71.374896980946133, -34.689323313982221 ], [ -71.375128550480753, -34.689917203704432 ], [ -71.375167145403196, -34.690184679363242 ], [ -71.375211253885979, -34.69038415217328 ], [ -71.375299470851544, -34.690757029034742 ], [ -71.375431796299907, -34.691754381381706 ], [ -71.375692312026345, -34.692780055067722 ], [ -71.375945935802363, -34.693600584865244 ], [ -71.376480751156109, -34.694341774678414 ], [ -71.376899781742566, -34.694618302510946 ], [ -71.377357407251452, -34.69479509850985 ], [ -71.378019034493221, -34.694867630092475 ], [ -71.379364343218143, -34.694745233009947 ], [ -71.380163809468598, -34.694654568387676 ], [ -71.380708273552997, -34.69457750338065 ], [ -71.381325792311983, -34.694427906397451 ], [ -71.382037041596888, -34.694246576358317 ], [ -71.38258288407134, -34.694019913250749 ], [ -71.383227970632063, -34.69381591592316 ], [ -71.383961274158338, -34.693453252765977 ], [ -71.384571900966904, -34.693151787807054 ], [ -71.384985417993008, -34.692866188412026 ], [ -71.38533277229493, -34.693142721174731 ], [ -71.38597785885564, -34.693650451054822 ], [ -71.386407916562803, -34.69395418083343 ], [ -71.386789730616911, -34.694186510695268 ], [ -71.387081949315359, -34.69439504035735 ], [ -71.387296978168919, -34.694531037679965 ], [ -71.387578169746675, -34.694707833865301 ], [ -71.387837307083018, -34.694889162893809 ], [ -71.388030281695208, -34.695029692617652 ], [ -71.388272878350534, -34.695179288513103 ], [ -71.389188129368293, -34.694902762554953 ], [ -71.400295196689484, -34.691408709485849 ], [ -71.401702532968315, -34.69053602319498 ], [ -71.402055400830591, -34.689661060949845 ], [ -71.402420674203668, -34.689373182748739 ], [ -71.402404133522609, -34.687916775717731 ], [ -71.402404133522609, -34.687041785787343 ], [ -71.401702532968315, -34.68531331347468 ], [ -71.404533746207065, -34.684440562924216 ], [ -71.40769163789642, -34.684449630509711 ], [ -71.410178253613381, -34.68357460393468 ], [ -71.410172740053014, -34.682988602988097 ], [ -71.411225830079502, -34.681832457429508 ], [ -71.411227208469597, -34.680375917741713 ], [ -71.411585589892212, -34.679504248662766 ], [ -71.411580076331859, -34.678633703936057 ], [ -71.413009466852102, -34.677774485453511 ], [ -71.413693148335284, -34.677774485453511 ], [ -71.414754508702288, -34.676321275066343 ], [ -71.414754508702288, -34.675150299939119 ], [ -71.414760022262627, -34.67370271148188 ], [ -71.414754508702288, -34.6722471624186 ], [ -71.415107376564563, -34.670513846719508 ], [ -71.417238367639072, -34.668176250385727 ], [ -71.420048905026519, -34.667610546694753 ], [ -71.421471403596314, -34.667610546694753 ], [ -71.422541034303819, -34.668204592152392 ], [ -71.423591367550131, -34.669381333745704 ], [ -71.424291589714329, -34.670810859571269 ], [ -71.425357085251591, -34.672842308234166 ], [ -71.424998703828962, -34.675160502117222 ], [ -71.424280562593637, -34.676326942863099 ], [ -71.424291589714329, -34.677192977649177 ], [ -71.423578962039329, -34.678363923895049 ], [ -71.422871847924711, -34.679521251398342 ], [ -71.42287736148505, -34.680969871649708 ], [ -71.42287736148505, -34.682993136860475 ], [ -71.42500283899922, -34.684156066925361 ], [ -71.425704439553527, -34.685899297967595 ], [ -71.427477049205436, -34.686193988795075 ], [ -71.429947124241366, -34.685314446910958 ], [ -71.430636319284858, -34.684729591722814 ], [ -71.43170457160231, -34.683861368843942 ], [ -71.433122935001848, -34.682704102000095 ], [ -71.434523379330244, -34.68182452304147 ], [ -71.435577847746814, -34.680667227728932 ], [ -71.435577847746814, -34.679511049757416 ], [ -71.437344943838383, -34.679511049757416 ], [ -71.439834316335521, -34.680095941807657 ], [ -71.441576601405501, -34.68124757764501 ], [ -71.443123155083143, -34.683242499458686 ], [ -71.469217457820307, -34.635660727162936 ], [ -71.468208476276615, -34.634889524946381 ], [ -71.466810788728381, -34.635842185465961 ], [ -71.465388290158586, -34.635406684871825 ], [ -71.463437868185437, -34.634375764196207 ], [ -71.461728664477548, -34.633436696588049 ], [ -71.460146272657667, -34.632350177563133 ], [ -71.45885609953622, -34.631288596169902 ], [ -71.457047651742073, -34.629809618249261 ], [ -71.457761657807154, -34.627139678771329 ], [ -71.458657611363691, -34.624968730070513 ], [ -71.459219994519188, -34.623616678979936 ], [ -71.457014570379982, -34.624106686618411 ], [ -71.454831200482161, -34.625032248707477 ], [ -71.454202654602483, -34.623426119672438 ], [ -71.453938003705773, -34.623063148352323 ], [ -71.453684379929754, -34.622146638703519 ], [ -71.453722974852212, -34.621248267937133 ], [ -71.453557568041774, -34.620467857155774 ], [ -71.453425242593411, -34.619859857624064 ], [ -71.453458323955502, -34.618380675984753 ], [ -71.45382221893847, -34.617255391315211 ], [ -71.452675398386091, -34.617101117227811 ], [ -71.451732579566581, -34.616996755182548 ], [ -71.45102684384203, -34.616896930494732 ], [ -71.450442406445134, -34.616788030698388 ], [ -71.449913104651714, -34.616633755742313 ], [ -71.449394829979013, -34.616198154318489 ], [ -71.449041962116738, -34.615553823020925 ], [ -71.449030934996031, -34.614800584317955 ], [ -71.449108124840905, -34.614219769084613 ], [ -71.449946186013804, -34.613584497769892 ], [ -71.451886959256314, -34.613112578788972 ], [ -71.452217772877205, -34.612495449919791 ], [ -71.452956589963847, -34.611996298213811 ], [ -71.453747785873787, -34.611871509818364 ], [ -71.454563792805303, -34.611526639095452 ], [ -71.455236447167749, -34.611299749680661 ], [ -71.455445962460985, -34.611118237702371 ], [ -71.456339159237359, -34.610845968990837 ], [ -71.457000786479114, -34.610555548047678 ], [ -71.457530088272549, -34.6103468073673 ], [ -71.458125552790122, -34.609929324432009 ], [ -71.458820261393967, -34.60961167296621 ], [ -71.459305454704605, -34.609239565417745 ], [ -71.459382644549478, -34.608930987161408 ], [ -71.45944880727366, -34.608683669936838 ], [ -71.459305454704605, -34.608275254558727 ], [ -71.458897451238855, -34.60789406505998 ], [ -71.458202742634981, -34.607304125480958 ], [ -71.457320572979313, -34.606877551174229 ], [ -71.456736135582418, -34.60649635525872 ], [ -71.455975264254377, -34.606069776802173 ], [ -71.45553417942655, -34.605824720102021 ], [ -71.455170284443582, -34.605652272360992 ], [ -71.454486602960415, -34.605261994572018 ], [ -71.454073085934326, -34.604987437586502 ], [ -71.45388011132215, -34.604869445875806 ], [ -71.453720218072064, -34.604710610615896 ], [ -71.453543784140919, -34.604488240741652 ], [ -71.453312214606299, -34.604324866577016 ], [ -71.453031023028544, -34.604048037397661 ], [ -71.452821507735322, -34.603675904915605 ], [ -71.452551343278259, -34.603214140645349 ], [ -71.452512748355829, -34.603037149237004 ], [ -71.452512748355829, -34.603250446528641 ], [ -71.45233080086436, -34.603840414907538 ], [ -71.452066149967635, -34.604498451616259 ], [ -71.451722930835984, -34.604927307216421 ], [ -71.451502388422057, -34.605249514728733 ], [ -71.450647786568098, -34.605362967780515 ], [ -71.44937415412771, -34.605471882564402 ], [ -71.449335559205281, -34.60546734445127 ], [ -71.448436848868539, -34.605431039537208 ], [ -71.447258325344137, -34.605358429661436 ], [ -71.446370642128102, -34.605067989523455 ], [ -71.445979179343396, -34.604886463921346 ], [ -71.445493986032758, -34.604564255000355 ], [ -71.445323065661981, -34.604346422908812 ], [ -71.445052901204932, -34.604160357544799 ], [ -71.44487371049361, -34.603945928041163 ], [ -71.444487761269244, -34.60344218671149 ], [ -71.44437749006228, -34.603623715470746 ], [ -71.444245164613918, -34.603914160660189 ], [ -71.443975000156868, -34.604327135664825 ], [ -71.443659348826927, -34.604614174774184 ], [ -71.443499455576841, -34.604968150491416 ], [ -71.443400211490584, -34.605294895968058 ], [ -71.443400211490584, -34.605435577652315 ], [ -71.443317508085343, -34.605957459237722 ], [ -71.443185182636995, -34.60631256374559 ], [ -71.443141074154212, -34.606829901780493 ], [ -71.442782692731598, -34.607292780447985 ], [ -71.442611772360806, -34.607628592768137 ], [ -71.442462906231412, -34.60800070753654 ], [ -71.442086605737643, -34.608263909658447 ], [ -71.441369842892414, -34.608449965827475 ], [ -71.440526268159161, -34.60856795245035 ], [ -71.439572422218944, -34.608527110946028 ], [ -71.439495232374071, -34.608536186837611 ], [ -71.438635116959773, -34.608381896545716 ], [ -71.437791542226506, -34.60820605064287 ], [ -71.436732938639679, -34.607802170901174 ], [ -71.436341475854974, -34.607329084548084 ], [ -71.436165041923829, -34.607111259709448 ], [ -71.435911418147825, -34.606716450732968 ], [ -71.435812174061553, -34.606303487610965 ], [ -71.435988607992698, -34.605817912961129 ], [ -71.436513774615861, -34.605477555205503 ], [ -71.437065130650666, -34.605218882378161 ], [ -71.437412484952588, -34.605037357105942 ], [ -71.437936273185656, -34.604828602552288 ], [ -71.438289141047932, -34.604642538268671 ], [ -71.438603413987764, -34.604315790225122 ], [ -71.438956281850054, -34.604097957481819 ], [ -71.43922093274675, -34.604034422824043 ], [ -71.439391853117542, -34.603916429759245 ], [ -71.439612395531455, -34.603698595968346 ], [ -71.43982742438503, -34.603521605592512 ], [ -71.440006615096351, -34.603112030263489 ], [ -71.440006615096351, -34.602848811811292 ], [ -71.44001212865669, -34.602499365335731 ], [ -71.440001101535998, -34.602381370089837 ], [ -71.439962506613554, -34.602031921647395 ], [ -71.439912884570433, -34.601809544600258 ], [ -71.440006615096351, -34.601449882503488 ], [ -71.440127913423993, -34.601118583547233 ], [ -71.440320888036169, -34.600927972589922 ], [ -71.440364996518966, -34.600719207706177 ], [ -71.440353969398259, -34.60042875134279 ], [ -71.440359482958613, -34.600215446804015 ], [ -71.440442186363839, -34.599642471793551 ], [ -71.440078291380871, -34.599569856856533 ], [ -71.439714396397903, -34.599501780295427 ], [ -71.43935601497526, -34.60013262095778 ], [ -71.439129959000994, -34.600583056412304 ], [ -71.43872746909561, -34.601531572453972 ], [ -71.438180248231049, -34.602109072728702 ], [ -71.437391809101285, -34.602876041345034 ], [ -71.437364241299548, -34.603007650632271 ], [ -71.436873534428557, -34.603479627050582 ], [ -71.436341475854974, -34.603699730520823 ], [ -71.435900391027133, -34.604099092028825 ], [ -71.435415197716495, -34.604212546652391 ], [ -71.434847301000644, -34.604384997383313 ], [ -71.434571622983242, -34.604475760782087 ], [ -71.43402578050879, -34.604412226413359 ], [ -71.433711507568958, -34.604398611899455 ], [ -71.433248368499719, -34.604366844691661 ], [ -71.432654282372198, -34.604324866577016 ], [ -71.432141521259823, -34.604211412106906 ], [ -71.431904438164864, -34.604179644827511 ], [ -71.431832761880344, -34.604247717554216 ], [ -71.43188238392348, -34.604601694833526 ], [ -71.431876870363126, -34.604855831436865 ], [ -71.431777626276869, -34.605296030498707 ], [ -71.431689409311289, -34.60552293632017 ], [ -71.43109256640362, -34.605767993910938 ], [ -71.430546723929169, -34.605867831981328 ], [ -71.429995367894364, -34.605922289060047 ], [ -71.429598391549305, -34.605922289060047 ], [ -71.429041521954161, -34.605890522435132 ], [ -71.42871070833327, -34.605885984344852 ], [ -71.428302704867519, -34.605876908163587 ], [ -71.428170379419157, -34.605790684392041 ], [ -71.42817589297951, -34.606035741192628 ], [ -71.428203460781248, -34.606412401161222 ], [ -71.428151081957935, -34.606483875600951 ], [ -71.428095946354446, -34.606610941119655 ], [ -71.427963620906098, -34.606751620574293 ], [ -71.427891944621578, -34.60687868568327 ], [ -71.42783129545775, -34.607010288626881 ], [ -71.427654861526605, -34.607132815317911 ], [ -71.427539076759302, -34.607223575713242 ], [ -71.427439832673045, -34.607300721971228 ], [ -71.427417778431632, -34.607341564078808 ], [ -71.417096393460113, -34.621073583603213 ], [ -71.415359621950458, -34.625436044619626 ], [ -71.411786834844946, -34.630771410569871 ], [ -71.412183811190005, -34.634727344744235 ], [ -71.396632814228354, -34.648619254036724 ], [ -71.38326794394446, -34.640083093176514 ] ] ] ] } } espero que me puedas ayudar por favor
Hola buenos días,
Para este tipo de ayudas que se salen de lo que hay en el blog debe enviarnos un ticket al centro de soporte. Recomendamos enviar el código fuente y allí le indicaremos como podemos proceder:
https://www.jose-aguilar.com/soporte/
Saludos
Hola buenas como puedo consumir un json desde una url???
ya que ahi es una url externa que se va actualizando de forma diaria
Hola,
En file_get_contents puedes poner como parámetro la url, no es así?
Saludos
Saludos Jose, Como para guardar el valor del resultado de una consulta Json convertida en variable php?
Hola,
Tan solo debes recorrer el array que genera la función json_decode y dentro del array añadir el código necesario para guardarlo donde sea. Donde necesitas guardarlo, en base de datos, en otro fichero, etc?
Saludos
Hola, yo estoy atascado en algo muy parecido… el json lo obtengo de una URL (http://websiteapi.egorealestate.com/v1/properties) y tengo que meter un header con el AuthorizationToken: tJKlYcpVPZ+W3yPOeuAZEg==, como quedaría el file_get?
Gracias
gracias
Muy claro y bien explicado, gracias por el aporte!
Excelente. De mucha ayuda. Esta bloqueado con estos cosa tan simple.
Utilizo isset para comprobar las variables de forma rápida
{«exception»:»invalid_parameter_exception»,»errorcode»:»invalidparameter»,»message»:»Detectado valor de paru00e1metro no vu00e1lido»,»debuginfo»:»The field ‘email’ value is invalid: acevedo.s.emanuelsdgmail.com(cleaned value: )»}
$resp = json_decode($resp, true);
if(isset($resp[0][«id»])){
echo «Existe»;
}
else if(isset($resp[«exception»])){
echo $resp[«debuginfo»];
}
else{
echo «No Existe»;
}