{"id":13699952,"url":"https://github.com/kjdev/php-ext-jq","last_synced_at":"2025-08-16T10:31:12.943Z","repository":{"id":23532105,"uuid":"26898782","full_name":"kjdev/php-ext-jq","owner":"kjdev","description":"This extension allows jq","archived":false,"fork":false,"pushed_at":"2022-05-26T21:00:12.000Z","size":791,"stargazers_count":41,"open_issues_count":2,"forks_count":7,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-11-13T06:32:53.457Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"Orderella/PopupDialog","license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kjdev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING.jq","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-11-20T06:18:16.000Z","updated_at":"2023-10-21T07:44:31.000Z","dependencies_parsed_at":"2022-08-22T00:50:47.713Z","dependency_job_id":null,"html_url":"https://github.com/kjdev/php-ext-jq","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kjdev%2Fphp-ext-jq","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kjdev%2Fphp-ext-jq/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kjdev%2Fphp-ext-jq/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kjdev%2Fphp-ext-jq/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kjdev","download_url":"https://codeload.github.com/kjdev/php-ext-jq/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":230029161,"owners_count":18161992,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-02T20:00:46.384Z","updated_at":"2024-12-16T21:35:32.390Z","avatar_url":"https://github.com/kjdev.png","language":"PHP","funding_links":[],"categories":["数据转换"],"sub_categories":[],"readme":"# PHP Extension for jq\n\n[![Build Status](https://secure.travis-ci.org/kjdev/php-ext-jq.png?branch=master)](http://travis-ci.org/kjdev/php-ext-jq)\n\nThis extension allows [jq](http://stedolan.github.io/jq).\n\n## Build\n\n```\n% git clone --depth=1 https://github.com/kjdev/php-ext-jq.git\n% cd php-ext-jq\n% phpize\n% ./configure\n% make\n% make test\n% make install\n```\n\n## Configuration\n\njq.ini:\n\n```\nextension=jq.so\n; jq.display_errors=Off\n```\n\n## Usage\n\n``` php\n$jq = Jq\\Input::fromString('{\"name\": \"jq\", \"version\": \"0.1.0\"}');\nprint_r($jq-\u003efilter('.'));\necho 'NAME: ', $jq-\u003efilter('.name'), PHP_EOL;\necho 'VERSION: ', $jq-\u003efilter('.version'), PHP_EOL;\n```\n\noutput:\n\n```\nArray\n(\n    [name] =\u003e jq\n    [version] =\u003e 0.1.0\n)\nNAME: jq\nVERSION: 0.1.0\n```\n\n## Class synopsis\n\n### Jq\\Input\n\n``` php\nJq\\Input {\n  public static fromString(string $text): Jq\\Executor\n  public static fromFile(string $file): Jq\\Executor\n}\n```\n\n---\n\n### Jq\\Input::fromString\n\n``` php\npublic static fromString(string $text): Jq\\Executor\n```\n\nLoad a JSON string.\n\n**Parameters:**\n\n* text\n\n  JSON text string.\n\n**Return Values:**\n\nReturns Jq\\Executor instance.\n\n---\n\n### Jq\\Input::fromFile\n\n``` php\npublic static fromFile(string $file): Jq\\Executor\n```\n\nLoad a JSON file.\n\n**Parameters:**\n\n* file\n\n  JSON file name.\n\n**Return Values:**\n\nReturns Jq\\Executor instance.\n\n---\n\n### Jq\\Executor\n\n``` php\nJq\\Executor {\n  public filter(string $filter, int $flags): mixed\n  public variable(string $name, string $value): self\n  public variables(): array\n}\n```\n\n---\n\n### Jq\\Executor::filter\n\n``` php\npublic filter(string $filter, int $flags = 0): mixed\n```\n\nGet filtering result of the load string.\n\n**Parameters:**\n\n* filter\n\n  jq filter string.\n\n* flags\n\n  - `Jq\\RAW` is raw output\n  - `Jq\\SORT` is object with the keys in sorted order\n\n**Return Values:**\n\nReturns the result value, or FALSE on error.\n\n### Jq\\Executor::variable\n\n``` php\npublic variable(string $name, string $value): self\n```\n\nSet variable value.\n\n**Parameters:**\n\n* name\n\n  variable name.\n\n* value\n\n  variable value.\n\n  - treat strings starting with `@` as JSON strings\n\n**Return Values:**\n\nReturns the self instance.\n\n### Jq\\Executor::variables\n\n``` php\npublic variables(): array\n```\n\nGet variables value.\n\n**Return Values:**\n\nReturns the variables.\n\n---\n\n### Jq\\Run\n\n``` php\nJq\\Run {\n  public static fromString(string $text, string $filter, int $flags = 0, array $variables = []): mixed\n  public static fromFile(string $file, string $filter, int $flags = 0, array $variables = []): mixed\n}\n```\n\n---\n\n### Jq\\Run::fromString\n\n``` php\npublic static fromString(string $text, string $filter, int $flags = 0, array $variables = []): mixed\n```\n\nGet filtering result of the JSON string.\n\n**Parameters:**\n\n* text\n\n  JSON text string.\n\n* filter\n\n  jq filter string.\n\n* flags\n\n  - `Jq\\RAW` is raw output\n  - `Jq\\SORT` is object with the keys in sorted order\n\n* variables\n\n  jq variables array.\n\n  - key is variable name\n  - value is string of variable value\n      - treat strings starting with `@` as JSON strings\n\n**Return Values:**\n\nReturns the result value, or FALSE on error.\n\n---\n\n### Jq\\Run::fromFile\n\n``` php\npublic static fromFile(string $file, string $filter, int $flags = 0, array $variables = []): mixed\n```\n\nGet filtering result of the JSON file.\n\n**Parameters:**\n\n* file\n\n  JSON file name.\n\n* filter\n\n  jq filter string.\n\n* flags\n\n  - `Jq\\RAW` is raw output\n  - `Jq\\SORT` is object with the keys in sorted order\n\n* variables\n\n  jq variables array.\n\n  - key is variable name\n  - value is string of variable value\n      - treat strings starting with `@` as JSON strings\n\n**Return Values:**\n\nReturns the result value, or FALSE on error.\n\n## Examples\n\n* Setting a `Jq\\RAW`\n\n```php\n$jq = Jq\\Input::fromString('{\"name\": \"jq\", \"version\": \"0.1.0\"}');\nprint_r($jq-\u003efilter('.', Jq\\RAW));\necho PHP_EOL;\necho 'NAME: ', $jq-\u003efilter('.name', Jq\\RAW), PHP_EOL;\necho 'VERSION: ', $jq-\u003efilter('.version', Jq\\RAW), PHP_EOL;\n```\n\nThe above example will output:\n\n```\n{\"name\":\"jq\",\"version\":\"0.1.0\"}\nNAME: jq\nVERSION: 0.1.0\n```\n\n* Execute static function\n\n```php\n$text = '{\"name\": \"jq\", \"version\": \"0.1.0\"}';\nprint_r(Jq\\Run::fromString($text, '.'));\necho 'NAME: ', Jq\\Run::fromString($text, '.name'), PHP_EOL;\necho 'VERSION: ', Jq\\Run::fromString($text, '.version', Jq\\RAW), PHP_EOL;\n```\n\nThe above example will output:\n\n```\nArray\n(\n    [name] =\u003e jq\n    [version] =\u003e 0.1.0\n)\nNAME: jq\nVERSION: 0.1.0\n```\n\n- Execute static function with a variables\n\n```php\n$text = \u003c\u003c\u003cEOT\n[\n  {\"key\": \"string\", \"var\": \"STRING\"},\n  {\"key\": 123, \"var\": \"NUMBER:123\"}\n]\nEOT;\n$jq = Jq\\Input::fromString($text);\nprint_r(\n  $jq-\u003efilter('.')\n  // (OR) Jq\\Run::fromString($text, '.')\n);\nprint_r(\n  $jq-\u003evariable('key', 'string')-\u003efilter('.[] | select(.key == $key)')\n  // (OR) Jq\\Run::fromString($text, '.[] | select(.key == $key)', 0, ['key' =\u003e 'string'])\n);\nprint_r(\n  $jq-\u003evariable('key', '@123')-\u003efilter('.[] | select(.key == $key)')\n  // (OR) Jq\\Run::fromString($text, '.[] | select(.key == $key)', 0, ['key' =\u003e '@123'])\n);\n// ['key' =\u003e '123'], it is evaluated as a character string, so it does not match\n```\n\nThe above example will output:\n\n```\nArray\n(\n    [0] =\u003e Array\n        (\n            [key] =\u003e string\n            [var] =\u003e STRING\n        )\n\n    [1] =\u003e Array\n        (\n            [key] =\u003e 123\n            [var] =\u003e NUMBER:123\n        )\n\n)\nArray\n(\n    [key] =\u003e string\n    [var] =\u003e STRING\n)\nArray\n(\n    [key] =\u003e 123\n    [var] =\u003e NUMBER:123\n)\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkjdev%2Fphp-ext-jq","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkjdev%2Fphp-ext-jq","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkjdev%2Fphp-ext-jq/lists"}