• Czas czytania ~2 min
  • 14.07.2023

JSON Parser to parser ściągający o zerowej zależności, który odczytuje duży plik JSON z dowolnego źródła w sposób wydajny pod względem pamięci. Możesz odczytać JSON z dowolnego źródła, takiego jak ciąg znaków, adres URL itp., i iterować go w następujący sposób:Jeśli nie chcesz używać foreach tego parsera jest również wyposażony w metodętraverse, która wygląda następująco:

// a source is anything that can provide a JSON, in this case an endpoint
$source = 'https://randomuser.me/api/1.4?seed=json-parser&results=5';

foreach (new JsonParser($source) as $key => $value) {
    // instead of loading the whole JSON, we keep in memory only one key and value at a time
}

JsonParser::parse($source)->traverse(function (mixed $value, string|int $key, JsonParser $parser) {
    // lazily load one key and value at a time; we can also access the parser if needed
});

Powyższe przykłady pokazują użycie adresu URL do przetwarzania JSON, ale pakiet obsługuje kilka źródeł danych. W chwili pisania tego tekstu plik readme zawiera następujące źródła:

  • ciągi znaków, np. {"foo":"bar"}
  • iterables, tj. tablice lub instancje Traversable
  • ścieżki plików, np. /ścieżka/do/large.json
  • zasoby, np. strumienie
  • Adresy URL punktów końcowych interfejsu API, np. https://endpoint.json lub dowolne wystąpienie Psr\Http\Message\UriInterface
  • Żądania PSR-7, tj. dowolne wystąpienie Psr\Http\Message\RequestInterface
  • Komunikaty PSR-7, tj. dowolne wystąpienie Psr\Http\Message\MessageInterface
  • Strumienie PSR-7, tj. dowolna instancja Psr\Http\Message\StreamInterface
  • Żądania klienta HTTP Laravel, tj. dowolne wystąpienie Illuminate\Http\Client\Request
  • Odpowiedzi klienta HTTP Laravel, tj. dowolne wystąpienie Illuminate\Http\Client\Response
  • źródła zdefiniowane przez użytkownika, tj. dowolne wystąpienie Cerbero\JsonParser\Sources\Source

Kolejną niesamowitą cechą tej biblioteki, na którą chcę zwrócić uwagę, są wskaźniki, które są przydatne do wyodrębniania tylko określonych poddrzew z dużego zestawu danych JSON: Ten pakiet ma wiele innych funkcji,

// Select the first gender result
$json = JsonParser::parse($source)->pointer('/results/0/gender');

foreach ($json as $key => $value) {
    // 1st and only iteration: $key === 'gender', $value === 'female'
}
// Get all gender results
$json = JsonParser::parse($source)->pointer('/results/-/gender');
// ...

o których wciąż muszę wspomnieć, że powinieneś sprawdzić! Na przykład ma interfejs API postępu do śledzenia postępu analizowania (tj. Procent ukończenia, przetworzone bajty itp.). Sprawdź ten pakiet, uzyskaj pełne instrukcje instalacji i wyświetl kod źródłowy na GitHub!

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

O

Professional Fullstack Developer with extensive experience in website and desktop application development. Proficient in a wide range of tools and technologies, including Bootstrap, Tailwind, HTML5, CSS3, PUG, JavaScript, Alpine.js, jQuery, PHP, MODX, and Node.js. Skilled in website development using Symfony, MODX, and Laravel. Experience: Contributed to the development and translation of MODX3 i...

O autorze CrazyBoy49z
WORK EXPERIENCE
Kontakt
Ukraine, Lutsk
+380979856297