{"id":2144,"date":"2012-03-05T12:25:05","date_gmt":"2012-03-05T12:25:05","guid":{"rendered":"https:\/\/www.jose-aguilar.com\/blog\/?p=2144"},"modified":"2016-08-31T15:22:39","modified_gmt":"2016-08-31T15:22:39","slug":"primeros-pasos-con-php-y-json","status":"publish","type":"post","link":"https:\/\/www.jose-aguilar.com\/blog\/primeros-pasos-con-php-y-json\/","title":{"rendered":"Primeros pasos con PHP y JSON"},"content":{"rendered":"<p>JSON es una notaci\u00f3n Javascript para escribir objetos que se ha hecho bastante popular en el mundo del desarrollo de webs y que se utiliza en diversos lenguajes de programaci\u00f3n, componentes (habitualmente Ajax), etc. Su \u00e9xito se debe a que es una excelente forma para almacenar informaci\u00f3n que deseamos compartir entre distintos componentes o lenguajes de las aplicaciones web. Si trabajamos con Ajax y alguno de los frameworks Javascript existentes, ya habremos notado esta posibilidad y posiblemente ya estemos utilizando JSON o una notaci\u00f3n similar.<\/p>\n<p>JSON, cuyas siglas significan JavaScript Object Notation (en espa\u00f1ol Notaci\u00f3n de Objetos de JavaScript), es un formato ligero, f\u00e1cil de escribir o codificar, as\u00ed como tambi\u00e9n es f\u00e1cil de leer por los seres humanos. Desde Javascript podemos procesar directamente cualquier objeto JSON y existen librer\u00edas para la mayor\u00eda de los lenguajes de programaci\u00f3n que tienen funciones para interpretar este formato. Por ello se ha adoptado universalmente. Para m\u00e1s informaci\u00f3n podemos visitar el sitio web de JSON en <a href=\"http:\/\/www.json.org\/json-es.html\" target=\"_blank\">http:\/\/www.json.org\/<\/a>.<\/p>\n<p>Esto quiere decir que con JSON podemos comunicar datos f\u00e1cilmente entre scripts Javascript y scripts PHP. Por ejemplo, pensemos en una validaci\u00f3n de formulario que se desea hacer con Ajax. Los datos del formulario se pueden enviar a PHP por medio de POST y luego podr\u00edamos desde PHP enviar a Javascript el resultado de validar esos datos en el servidor. Como la validaci\u00f3n puede ser positiva o negativa, as\u00ed como puede tener m\u00e1s o menos c\u00f3digos de error y acciones a realizar dependiendo de la informaci\u00f3n procesada, el script PHP tiene que mandar una respuesta m\u00e1s o menos elaborada al script Javascript y una posibilidad es enviar esos datos desde PHP utilizando la notaci\u00f3n JSON.<\/p>\n<p>PHP dispone de varias funciones para hacer distintos tratamientos con notaci\u00f3n de objetos JSON, que permite convertir un objeto PHP, o cualquier otro tipo de variable, a un string con notaci\u00f3n JSON, as\u00ed como crear un objeto PHP a partir de un string codificado con JSON.<\/p>\n<p>En PHP, como dec\u00edamos, es posible producir y consumir datos cargados con notaci\u00f3n JSON, por medio de unas funciones de las que dispone el lenguaje, que existen de manera predeterminada en los servidores modernos de PHP y que se pueden utilizar tambi\u00e9n en instalaciones antiguas de PHP, aunque con alg\u00fan trabajo de instalaci\u00f3n adicional.<\/p>\n<p>A partir de PHP 5.2 las <a href=\"http:\/\/www.php.net\/manual\/en\/ref.json.php\" target=\"_blank\">funciones JSON<\/a> est\u00e1n disponibles siempre, pero si utilizamos por ejemplo PHP 4 tendr\u00edamos que instalarlas manualmente. Para ello existen varios paquetes de librer\u00edas, que provienen de diversas fuentes, que tienen funciones para tratar con JSON desde PHP.<\/p>\n<p>Veremos entonces c\u00f3mo producir cadenas con notaci\u00f3n JSON a partir de variables simples, arrays y objetos PHP.<\/p>\n<p>Para crear una cadena para expresar un objeto u otro tipo de variable con JSON en PHP se dispone de una funci\u00f3n llamada json_encode(), que recibe lo que deseamos convertir en notaci\u00f3n JSON y devuelve una cadena de texto con el JSON producido.<\/p>\n<p>Podemos convertir en JSON cualquier cosa que necesitemos, como una cadena, una variable num\u00e9rica, un array -normal o asociativo- y objetos con todo tipo de datos dentro. Veremos varios ejemplos que ilustrar\u00e1n este proceso.<\/p>\n<p>Podr\u00edamos tener el siguiente array asociativo en PHP:<\/p>\n<pre>$miArray = array(\"manzana\"=&gt;\"verde\", \"uva\"=&gt;\"Morada\", \"fresa\"=&gt;\"roja\");\r\nprint_r(json_encode($miArray));<\/pre>\n<p>Devolver\u00eda lo siguiente:<\/p>\n<pre>{\"manzana\":\"verde\",\"uva\":\"Morada\",\"fresa\":\"roja\"}<\/pre>\n<p>Este resultado ya tiene una forma parecida a lo que estamos acostumbrados a ver en JSON. Podr\u00edamos fijarnos que la cadena que devuelve no tiene saltos de l\u00ednea e identaci\u00f3n de los elementos, con lo que la lectura se dificulta un poco por seres humanos. No obstante, podr\u00edamos utilizar esa cadena para crear una variable Javascript y por supuesto podremos acceder a cualquier valor del JSON, de una manera parecida a esta:<\/p>\n<pre>&lt;script&gt;\r\n JSONFrutas = eval(&lt;?php echo json_encode($miArray);?&gt;);\r\n alert(JSONFrutas.manzana);\r\n &lt;\/script&gt;<\/pre>\n<p>Como se ha visto, para almacenar el JSON en una variable Javascript, sin almacenar la propia cadena, sino el objeto que representa, tenemos que utilizar la funci\u00f3n Javascript eval(). Luego podemos acceder a los componentes del JSON como lo hacemos con cualquier objeto, variable, operador punto y luego el nombre de la propiedad a acceder.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>JSON es una notaci\u00f3n Javascript para escribir objetos que se ha hecho bastante popular en el mundo del desarrollo de webs y que se utiliza en diversos lenguajes de programaci\u00f3n, componentes (habitualmente Ajax), etc. Su \u00e9xito se debe a que es una excelente forma para almacenar informaci\u00f3n que deseamos compartir entre distintos componentes o lenguajes [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":2161,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[14,3],"tags":[],"class_list":["post-2144","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-javascript","category-php"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Primeros pasos con PHP y JSON - Jose Aguilar Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Primeros pasos con PHP y JSON - Jose Aguilar Blog\" \/>\n<meta property=\"og:description\" content=\"JSON es una notaci\u00f3n Javascript para escribir objetos que se ha hecho bastante popular en el mundo del desarrollo de webs y que se utiliza en diversos lenguajes de programaci\u00f3n, componentes (habitualmente Ajax), etc. Su \u00e9xito se debe a que es una excelente forma para almacenar informaci\u00f3n que deseamos compartir entre distintos componentes o lenguajes [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.jose-aguilar.com\/blog\/primeros-pasos-con-php-y-json\/\" \/>\n<meta property=\"og:site_name\" content=\"Jose Aguilar Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/joseaguilarblog\" \/>\n<meta property=\"article:published_time\" content=\"2012-03-05T12:25:05+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2016-08-31T15:22:39+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/03\/JSON1.gif\" \/>\n\t<meta property=\"og:image:width\" content=\"192\" \/>\n\t<meta property=\"og:image:height\" content=\"119\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/gif\" \/>\n<meta name=\"author\" content=\"Jose Aguilar\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@JoseAguilarBlog\" \/>\n<meta name=\"twitter:site\" content=\"@JoseAguilarBlog\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jose Aguilar\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/primeros-pasos-con-php-y-json\/\",\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/primeros-pasos-con-php-y-json\/\",\"name\":\"Primeros pasos con PHP y JSON - Jose Aguilar Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/primeros-pasos-con-php-y-json\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/primeros-pasos-con-php-y-json\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/03\/JSON1.gif\",\"datePublished\":\"2012-03-05T12:25:05+00:00\",\"dateModified\":\"2016-08-31T15:22:39+00:00\",\"author\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/primeros-pasos-con-php-y-json\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.jose-aguilar.com\/blog\/primeros-pasos-con-php-y-json\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/primeros-pasos-con-php-y-json\/#primaryimage\",\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/03\/JSON1.gif\",\"contentUrl\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/03\/JSON1.gif\",\"width\":192,\"height\":119},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/primeros-pasos-con-php-y-json\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\/\/www.jose-aguilar.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Primeros pasos con PHP y JSON\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#website\",\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/\",\"name\":\"Jose Aguilar Blog\",\"description\":\"Desarrollo Web con PrestaShop, WordPress, PHP, jQuery y Ajax\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.jose-aguilar.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11\",\"name\":\"Jose Aguilar\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g\",\"caption\":\"Jose Aguilar\"},\"description\":\"Director ejecutivo y tecnol\u00f3gico en JA Modules. Experto programador PrestaShop y Experto programador WordPress.\",\"sameAs\":[\"https:\/\/plus.google.com\/114357189801512615537\"],\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/author\/josea902\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Primeros pasos con PHP y JSON - Jose Aguilar Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"og_locale":"es_ES","og_type":"article","og_title":"Primeros pasos con PHP y JSON - Jose Aguilar Blog","og_description":"JSON es una notaci\u00f3n Javascript para escribir objetos que se ha hecho bastante popular en el mundo del desarrollo de webs y que se utiliza en diversos lenguajes de programaci\u00f3n, componentes (habitualmente Ajax), etc. Su \u00e9xito se debe a que es una excelente forma para almacenar informaci\u00f3n que deseamos compartir entre distintos componentes o lenguajes [&hellip;]","og_url":"https:\/\/www.jose-aguilar.com\/blog\/primeros-pasos-con-php-y-json\/","og_site_name":"Jose Aguilar Blog","article_publisher":"https:\/\/www.facebook.com\/joseaguilarblog","article_published_time":"2012-03-05T12:25:05+00:00","article_modified_time":"2016-08-31T15:22:39+00:00","og_image":[{"width":192,"height":119,"url":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/03\/JSON1.gif","type":"image\/gif"}],"author":"Jose Aguilar","twitter_card":"summary_large_image","twitter_creator":"@JoseAguilarBlog","twitter_site":"@JoseAguilarBlog","twitter_misc":{"Escrito por":"Jose Aguilar","Tiempo de lectura":"4 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.jose-aguilar.com\/blog\/primeros-pasos-con-php-y-json\/","url":"https:\/\/www.jose-aguilar.com\/blog\/primeros-pasos-con-php-y-json\/","name":"Primeros pasos con PHP y JSON - Jose Aguilar Blog","isPartOf":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/primeros-pasos-con-php-y-json\/#primaryimage"},"image":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/primeros-pasos-con-php-y-json\/#primaryimage"},"thumbnailUrl":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/03\/JSON1.gif","datePublished":"2012-03-05T12:25:05+00:00","dateModified":"2016-08-31T15:22:39+00:00","author":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11"},"breadcrumb":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/primeros-pasos-con-php-y-json\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.jose-aguilar.com\/blog\/primeros-pasos-con-php-y-json\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.jose-aguilar.com\/blog\/primeros-pasos-con-php-y-json\/#primaryimage","url":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/03\/JSON1.gif","contentUrl":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/03\/JSON1.gif","width":192,"height":119},{"@type":"BreadcrumbList","@id":"https:\/\/www.jose-aguilar.com\/blog\/primeros-pasos-con-php-y-json\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/www.jose-aguilar.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Primeros pasos con PHP y JSON"}]},{"@type":"WebSite","@id":"https:\/\/www.jose-aguilar.com\/blog\/#website","url":"https:\/\/www.jose-aguilar.com\/blog\/","name":"Jose Aguilar Blog","description":"Desarrollo Web con PrestaShop, WordPress, PHP, jQuery y Ajax","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.jose-aguilar.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Person","@id":"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11","name":"Jose Aguilar","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g","caption":"Jose Aguilar"},"description":"Director ejecutivo y tecnol\u00f3gico en JA Modules. Experto programador PrestaShop y Experto programador WordPress.","sameAs":["https:\/\/plus.google.com\/114357189801512615537"],"url":"https:\/\/www.jose-aguilar.com\/blog\/author\/josea902\/"}]}},"_links":{"self":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/posts\/2144","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/comments?post=2144"}],"version-history":[{"count":0,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/posts\/2144\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/media\/2161"}],"wp:attachment":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/media?parent=2144"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/categories?post=2144"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/tags?post=2144"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}