json_decode(): Argument #1 ($json) must be of type string, array given: what it means and how to fix it
Troubleshoot json_decode(): Argument #1 ($json) must be of type string, array given quickly and validate JSON locally (no upload).
What the error means
json_decode(): Argument #1 ($json) must be of type string, array given means the parser expected valid JSON but encountered a character/token that cannot appear there. In practice, it usually means the input is not JSON (or not strict JSON), or it is incomplete.
Most common real-world causes
- The input is not strict JSON (single quotes, comments, trailing commas).
- The response is truncated (missing closing } / ] / ").
- The response contains a prefix/suffix (logs, banners, debug output).
- The payload has invalid escapes or control characters in strings.
- You are parsing the wrong thing (already-parsed object, HTML, CSV, etc).
Fast debugging steps
- Validate the JSON as-is to get an exact error location.
- Check the first and last 50 characters for truncation and prefixes.
- Fix one issue at a time and re-validate after each change.
Code example (php)
$obj = json_decode($text, true);
if (json_last_error() !== JSON_ERROR_NONE) {
throw new Exception(json_last_error_msg());
}
Fix without uploading data
If the JSON contains sensitive data, validate and fix it locally. No Upload Tools runs 100% in your browser.
- JSON Validator to pinpoint the exact syntax error.
- JSON Repair to remove comments/trailing commas when the source is not strict.
- JSON Formatter to pretty-print and inspect structure.
- JSON String Escape if the issue is inside a string (newlines/tabs/quotes).
Workflow: validate -> fix the first error -> validate again -> export/convert.
FAQ
Does the exact token matter? Yes. The token often hints at the root cause: < is usually HTML, u is often undefined, and / often points to comments.
Should I just regex-fix JSON? Avoid blind regex edits. Validate after each change so you know what you fixed and what broke.
Related by intent
Useful follow-up pages selected from real search impressions and no-click opportunities.
Related by winning cluster
Linked from a winner family to push crawl and first-impression conversion.
Quick fix checklist
- Reproduce the error on a minimal input.
- Check type/format and field mapping.
- Apply the smallest safe fix.
- Validate on production-like payload.
Next pages to check
Closest crawled pages without impressions yet. Added to speed first-impression conversion.