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:

json-file

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.

Ver demo Descargar

Autor
Escrito por Jose Aguilar - Director ejecutivo y tecnológico en JA Modules. Experto programador PrestaShop y Experto programador WordPress.
Te ha servido? Valora esta entrada!
(23 votos, promedio: 5 de 5)
Comparte en las redes sociales
¿Buscas trabajo de programador?

15 respuestas a “Leer un archivo JSON con PHP”

  1. Mauro dice:

    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

  2. Argel dice:

    Muy clarotu artículo. Gracias

  3. Minor Valerio dice:

    Minor de Artinsoft. todo bien, para que me mande un correo y llamarlo

  4. Fabio dice:

    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

  5. Jaime Sandoval dice:

    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

  6. Anibal dice:

    Hola buenas como puedo consumir un json desde una url???
    ya que ahi es una url externa que se va actualizando de forma diaria

  7. Jorge N dice:

    Saludos Jose, Como para guardar el valor del resultado de una consulta Json convertida en variable php?

    • Jose Aguilar dice:

      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

  8. Diego dice:

    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

  9. juan dice:

    gracias

  10. educhip dice:

    Muy claro y bien explicado, gracias por el aporte!

  11. Emanuel dice:

    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»;
    }

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Ver más sobre