Created
December 4, 2015 17:23
-
-
Save marcosfreitas/5c925e39d177865035d1 to your computer and use it in GitHub Desktop.
Utilizando o JSON PARSER (https://github.com/kuma-giyomu/JSONParser) para retornar parte de um grande arquivo JSON.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
header('Cache-Control: no-cache, must-revalidate'); | |
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); | |
//header('Content-Type: application/json; charset=utf-8'); | |
header('Content-Type: text/html; charset=utf-8'); | |
ini_set("memory_limit","128M"); | |
set_time_limit(120); | |
ob_start(); | |
// link público do arquivo json | |
//https://drive.google.com/file/d/0B4mgTK9wetCqNVg2Y203TVhQQms/view?usp=sharing | |
$file = dirname(__FILE__).'/grade.json'; | |
// salto é o número de objetos que devem ser pulados iniciando um novo intervalo de 10 objetos | |
if (isset($_GET['salto'])) { | |
$salto = (int) $_GET['salto']; | |
} else { | |
$salto = 0; | |
} | |
$array_json = array(); | |
$aux_grupo_objetos = array(); | |
$aux_prop_objeto = array(); | |
$propriedade = ""; | |
$valor = ""; | |
$contador_itens = 0; | |
$contador_salto = 0; | |
$para_processo = false; | |
// para começar de 0 a 9, 10 a 20, etc. | |
if ($salto === 0 || $salto === 10) { | |
$inicio_salto = 0; | |
$fim_salto = 9; | |
} else { | |
$inicio_salto = ($salto-10); | |
$fim_salto = $salto; | |
} | |
echo "<br><strong>".$inicio_salto." - ".$fim_salto."</strong><br>"; | |
/* Parse do arquivo JSON */ | |
require_once dirname(__FILE__) . '/JSONParser/package/JSONParser.php'; | |
/** | |
* CRIAR UM ARRAY DE OBJETOS E A CADA NOVO OBJETO INSTANCIAR UM ARRAY PASSANDO O ANTIGO PARA | |
* UMA VARIAVEL AUXILIAR QUE ACUMULARÁ TODOS OS ARRAYS QUE REPRESENTAM OS OBJETOS | |
* COLOCAR ESSA VARIAVEL DENTRO DE OUTRO ARRAY E TRANSFORMAR COM JSON_ENCODE NO FINAL * | |
*/ | |
function objStart($value, $property) { | |
if ($GLOBALS['contador_salto'] >= $GLOBALS['inicio_salto'] && $GLOBALS['contador_salto'] <= $GLOBALS['fim_salto']){ | |
echo "<br><br><strong>OBJETO ". $GLOBALS['contador_salto'] ."</strong><br><br>"; | |
echo "<br><strong>salto: ".$GLOBALS['contador_salto']."</strong><br>"; | |
$GLOBALS['contador_salto']++; | |
} | |
$GLOBALS['contador_itens']++; | |
} | |
function objEnd($value, $property) { | |
// só chega aqui depois do incremento em objStart() | |
if ($GLOBALS['contador_salto'] > $GLOBALS['fim_salto']){ | |
echo $GLOBALS['contador_salto']." ---"; | |
ob_flush(); | |
ob_clean(); | |
exit(); | |
} | |
} | |
function arrayStart($value, $property) { | |
echo "<h1>início de tudo</h1>"; | |
} | |
function arrayEnd($value, $property) { | |
echo "<h1>fim de tudo</h1>"; | |
} | |
function property($value, $property) { | |
if ($GLOBALS['contador_salto'] >= $GLOBALS['inicio_salto'] && $GLOBALS['contador_salto'] <= $GLOBALS['fim_salto']){ | |
echo "propriedade: ".$value."<br>"; | |
} | |
} | |
function scalar($value, $property) { | |
if ($GLOBALS['contador_salto'] >= $GLOBALS['inicio_salto'] && $GLOBALS['contador_salto'] <= $GLOBALS['fim_salto']){ | |
echo "valor: ".utf8_encode($value)."<br>"; | |
} | |
} | |
// initialise the parser object | |
$parser = new JSONParser(); | |
// sets the callbacks | |
$parser->setArrayHandlers('arrayStart', 'arrayEnd'); | |
$parser->setObjectHandlers('objStart', 'objEnd'); | |
$parser->setPropertyHandler('property'); | |
$parser->setScalarHandler('scalar'); | |
// parse the document | |
$parser->parseDocument($file); | |
$parser->initialise(); | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment