Im integrating Lightspeed API to my website like POS system. I currently getting the value file_get_contents(), but when Im trying to load it array I gives my the error 4 of json_last_error().
Here is my codes:
$maps_url = "http://cloud-docs.merchantos.com/API/Account/797/Item/?itemID=1";
$maps_json = file_get_contents($maps_url);
//print_r($maps_json);
$maps_array = json_decode(stripslashes($maps_json), true);
echo $data = $maps_array['Item']['systemSku'];
switch (json_last_error()) {
case JSON_ERROR_NONE:
echo ' - No errors';
break;
case JSON_ERROR_DEPTH:
echo ' - Maximum stack depth exceeded';
break;
case JSON_ERROR_STATE_MISMATCH:
echo ' - Underflow or the modes mismatch';
break;
case JSON_ERROR_CTRL_CHAR:
echo ' - Unexpected control character found';
break;
case JSON_ERROR_SYNTAX:
echo ' - Syntax error, malformed JSON';
break;
case JSON_ERROR_UTF8:
echo ' - Malformed UTF-8 characters, possibly incorrectly encoded';
break;
default:
echo ' - Unknown error';
break;
}
json_last_error();
Let me rephrase it then:
The shown URL does not retrieve JSON.
It pulls XML.
Therefore json_decode fails.
Hence there's no usable data in $maps_url.
Which is also why ['Item']['systemSku'] won't work.
(And stripslashes would have made no sense in there anyway).
So, investigate the API you're using. Figure out if there is a JSON variant available. Else throw away your code, and instead use a XML traversal frontend, such as SimpleXML.
As mario has said, $maps_url receives XML.
Check out xml_parse_into_struct for help with XML to array conversion.
Related
I am trying to use PHP's json_decode function to get data from the database (phpmyadmin)(the type is set to text) and set it on the page This is the code that i got:
$belangrijkespecs = $productClass->get('belangrijkeSpecs');
$belangrijkespecs = json_decode($belangrijkespecs);
var_dump($belangrijkespecs);
This code outputs
NULL
And when I echo the $productClass->get('belangrijkeSpecs') it outputs:
{"Beeldschermdiagonaal":"10,1 inch (25,7 cm)","Beeldresolutie":"1920 x 1200","Batterijduur":"Tot 12 uur","Gewicht":"525 g","Opslag":"32 GB"}
When I passed this in an online JSON decode website than I get the right array (from the website https://3v4l.org/IHKZZ):
array (
'Beeldschermdiagonaal' => '10,1 inch (25,7 cm)',
'Beeldresolutie' => '1920 x 1200',
'Batterijduur' => 'Tot 12 uur',
'Gewicht' => '525 g',
'Opslag' => '32 GB',
)
When i try json_last_error() with this code:
switch (json_last_error()) {
case JSON_ERROR_NONE:
echo ' - No errors';
break;
case JSON_ERROR_DEPTH:
echo ' - Maximum stack depth exceeded';
break;
case JSON_ERROR_STATE_MISMATCH:
echo ' - Underflow or the modes mismatch';
break;
case JSON_ERROR_CTRL_CHAR:
echo ' - Unexpected control character found';
break;
case JSON_ERROR_SYNTAX:
echo ' - Syntax error, malformed JSON';
break;
case JSON_ERROR_UTF8:
echo ' - Malformed UTF-8 characters, possibly incorrectly encoded';
break;
default:
echo ' - Unknown error';
break;
}
It outputs
- Syntax error, malformed JSON
And if i just use echo json_last_error() it outputs : 4.
i have already tried :
$belangrijkespecs = str_replace("/", "", $belangrijkespecs);
and
$belangrijkespecs = rtrim($belangrijkespecs, "\0");
and
$belangrijkespecs = stripslashes($belangrijkespecs);
the output of var_dump $productClass->get('belangrijkeSpecs') :
string(240) "{"Beeldschermdiagonaal":"10,1 inch (25,7 cm)","Beeldresolutie":"1920 x 1200","Batterijduur":"Tot 12 uur","Gewicht":"525 g","Opslag":"32 GB"
The output of echo addcslashes($belangrijkespecs, '\0..\37!#\177..\377') is:
{"\;\Beeldschermdiagonaal"\;\:"\;\1\0,\1 inch (\2\5,\7 cm)"\;,"\;\Beeldresolutie"\;\:"\;\1\9\2\0 x \1\2\0\0"\;,"\;\Batterijduur"\;\:"\;\Tot \1\2 uur"\;,"\;\Gewicht"\;\:"\;\5\2\5 g"\;,"\;\Opslag"\;\:"\;\3\2 \G\B"\;}
And when i do
$belangrijkespecs = stripslashes($belangrijkespecs); before json_decode it still dosnt work...
Also tried:
$belangrijkespecs = preg_replace('/\\\\/', '', $belangrijkespecs);
But it did not work.
The structure of this 'belangrijkeSpecs' = http://prntscr.com/lvnsbh
I have looked on the internet but the answers that were given did not help me.
So my question is:
How can i get a array from the json encoded string
( $productClass->get('belangrijkeSpecs') )
and I expect an array as a return from the json_decode();
The awnser was that i escaped the string before i did the json_decode. And because i did that there where a lot of backslashes.
Thanks to #Matthijs i found it
Welp, I see quite a few hits on this, but none seem to answer my question.
I have a REST method that returns this JSON:
This is the exact string in the $result variable, below:
{"people":{"people":{"new_user":{"id":7,"name":"Marvin","lang":"en","read_token":1,"write_token":11,"last_access":"2018-06-17 17:00:02","writeable":true,"surname":"Martian","middle_name":"D","given_name":"Marvin","nickname":"Angry Little Fella","payload":"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDIyLjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIKCSBpZD0ic3ZnMjczMzMiIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIiB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgoJIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTU2LjggMjE5LjMiCgkgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMTU2LjggMjE5LjM7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5zdDB7ZmlsbDojRkZFODZFO30KCS5zdDF7ZmlsbDpub25lO3N0cm9rZTojMjMxRjIwO3N0cm9rZS13aWR0aDoxLjI1O30KCS5zdDJ7ZmlsbDojRThBRTEwO30KCS5zdDN7ZmlsbDojNTlBRDQwO30KCS5zdDR7ZmlsbDojMjMxRjIwO30KCS5zdDV7ZmlsbDojRkZGRkZGO30KPC9zdHlsZT4KPGcgaWQ9ImxheWVyMSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzQwLjIwOTM3LC0xMTIuNzAzNzcpIj4KCTxnIGlkPSJnMjcxMTQiIHRyYW5zZm9ybT0ibWF0cml4KDIuNjQ4NDAxNCwwLDAsMi42NDg0MDE0LDEyNjIuNDMzMSwtMTMwNi45NTEzKSI+CgkJPHBhdGggaWQ9InBhdGgxMDA0MCIgY2xhc3M9InN0MCIgZD0iTS01NjQuNyw1NTEuNGMwLjEsMCwyLjItNy4zLDMuMy05YzAsMC0xLjMtMC43LTIuMy0xYzAsMCwwLjMtMC43LDAuNC0xYzAsMC0xLjEtMC43LTIuOC0xCgkJCWMwLDAsMC4yLTAuOSwwLjMtMS4xYzAsMC00LjItMS42LTguMy0xYzAsMCwwLTAuNSwwLTAuN2MwLDAtNS41LTEuMS05LjUsMS4zYzAsMCwwLjEsMC43LDAuMSwwLjljMCwwLTEuMywwLjItMi4zLDAuNgoJCQljMCwwLTAuMS0wLjMtMC4yLTAuNmMwLDAtMy44LDEuNi01LDQuNmMwLDAsMiwzLjksMyw4Qy01ODgsNTUxLjYtNTY5LDU1Mi01NjQuNyw1NTEuNCIvPgoJCTxwYXRoIGlkPSJwYXRoMTAwNDQiIGNsYXNzPSJzdDEiIGQ9Ik0tNTY0LjcsNTUxLjRjMC4xLDAsMi4yLTcuMywzLjMtOWMwLDAtMS4zLTAuNy0yLjMtMWMwLDAsMC4zLTAuNywwLjQtMWMwLDAtMS4xLTAuNy0yLjgtMQoJCQljMCwwLDAuMi0wLjksMC4zLTEuMWMwLDAtNC4yLTEuNi04LjMtMWMwLDAsMC0wLjUsMC0wLjdjMCwwLTUuNS0xLjEtOS41LDEuM2MwLDAsMC4xLDAuNywwLjEsMC45YzAsMC0xLjMsMC4yLTIuMywwLjYKCQkJYzAsMC0wLjEtMC4zLTAuMi0wLjZjMCwwLTMuOCwxLjYtNSw0LjZjMCwwLDIsMy45LDMsOEMtNTg4LDU1MS42LTU2OSw1NTItNTY0LjcsNTUxLjRMLTU2NC43LDU1MS40eiIvPgoJCTxwYXRoIGlkPSJwYXRoMTAwNDgiIGNsYXNzPSJzdDIiIGQ9Ik0tNTY2LjQsNTYxLjZjMCwwLDIuNi01LjEsMy02LjNjMCwwLDAuNi0wLjksMC40LTNjMCwwLDAtMS0yLjctMS45YzAsMC0xMS40LTMuOC0yMi41LDAuMgoJCQljMCwwLTAuNywwLjItMS4yLDEuNGMwLDAtMC40LDAuOS0wLjcsMmMwLDAtMC4xLDAuNywwLjMsMS42YzAsMCwyLjIsNC4zLDQsNi42Qy01ODUuNyw1NjIuMS01NjkuNiw1NjMuNS01NjYuNCw1NjEuNiIvPgoJCTxwYXRoIGlkPSJwYXRoMTAwNTIiIGNsYXNzPSJzdDEiIGQ9Ik0tNTY2LjQsNTYxLjZjMCwwLDIuNi01LjEsMy02LjNjMCwwLDAuNi0wLjksMC40LTNjMCwwLDAtMS0yLjctMS45YzAsMC0xMS40LTMuOC0yMi41LDAuMgoJCQljMCwwLTAuNywwLjItMS4yLDEuNGMwLDAtMC40LDAuOS0wLjcsMmMwLDAtMC4xLDAuNywwLjMsMS42YzAsMCwyLjIsNC4zLDQsNi42Qy01ODUuNyw1NjIuMS01NjkuNiw1NjMuNS01NjYuNCw1NjEuNgoJCQlMLTU2Ni40LDU2MS42eiIvPgoJCTxwYXRoIGlkPSJwYXRoMTAwNTYiIGNsYXNzPSJzdDIiIGQ9Ik0tNTczLjksNTYwLjRjMCwwLDAtMS43LDAtMi42YzAsMCwwLjEtMS41LTAuOS0xLjdjMCwwLTEuMy0wLjYtMi41LDAuMWMwLDAtMC43LDAuMy0wLjYsMS43CgkJCWMwLDAsMCwyLjMsMCwyLjhDLTU3Ny44LDU2MC42LTU3NC44LDU2MS41LTU3My45LDU2MC40Ii8+CgkJPHBhdGggaWQ9InBhdGgxMDA2MCIgY2xhc3M9InN0MSIgZD0iTS01NzMuOSw1NjAuNGMwLDAsMC0xLjcsMC0yLjZjMCwwLDAuMS0xLjUtMC45LTEuN2MwLDAtMS4zLTAuNi0yLjUsMC4xYzAsMC0wLjcsMC4zLTAuNiwxLjcKCQkJYzAsMCwwLDIuMywwLDIuOEMtNTc3LjgsNTYwLjYtNTc0LjgsNTYxLjUtNTczLjksNTYwLjRMLTU3My45LDU2MC40eiIvPgoJCTxwYXRoIGlkPSJwYXRoMTAwNjQiIGNsYXNzPSJzdDMiIGQ9Ik0tNTUwLjMsNTc1LjRjMCwwLTUuNy0xNi4xLTI2LjItMTUuOWMwLDAtMTktMC45LTI1LjYsMTguNgoJCQlDLTYwMi4xLDU3OC4yLTU3NCw1NjkuMi01NTAuMyw1NzUuNCIvPgoJCTxwYXRoIGlkPSJwYXRoMTAwNjgiIGNsYXNzPSJzdDEiIGQ9Ik0tNTUwLjMsNTc1LjRjMCwwLTUuNy0xNi4xLTI2LjItMTUuOWMwLDAtMTktMC45LTI1LjYsMTguNgoJCQlDLTYwMi4xLDU3OC4yLTU3NCw1NjkuMi01NTAuMyw1NzUuNHoiLz4KCQk8cGF0aCBpZD0icGF0aDEwMDcyIiBjbGFzcz0ic3QzIiBkPSJNLTU1Mi42LDU5OS41YzAsMCw1LTAuNiw1LjYtMy4xYzAsMCwwLjQtMC41LDAuMS0xLjhjMCwwLDAuOC02LjYsMC4yLTEzLjJjMCwwLTAuNC0yLTIuMy00LjUKCQkJYzAsMC04LjctMTMuNy0yOC42LTEzYzAsMC0xNy44LDAtMjYuMSwxNi4yYzAsMC0wLjksMS4zLTAuOSwzLjhjMCwwLTAuMiw0LjQsMS4zLDExLjJjMCwwLTAuNywyLjUsMywzLjhjMCwwLDEuMSwwLjMsMS45LDAuNAoJCQljMCwwLDEuMiwwLjIsMi4xLDAuM2MwLDAsMS4yLDYuNi01LjksMTAuMmMwLDAsMy43LDYuNiw1LjUsOC44aDIuNWMwLDAsNS43LTUuMiwxMS03YzAsMCwxNS45LTMuOCwyMC41LTEuMmMwLDAsNC41LDUsNS44LDcuNwoJCQljMCwwLDEuNC0wLjEsMi40LTAuMWMwLDAsNS02LjQsNi44LTguNkMtNTQ3LjYsNjA5LjMtNTUyLjcsNjA2LjMtNTUyLjYsNTk5LjUiLz4KCQk8cGF0aCBpZD0icGF0aDEwMDc2IiBjbGFzcz0ic3QxIiBkPSJNLTU1Mi42LDU5OS41YzAsMCw1LTAuNiw1LjYtMy4xYzAsMCwwLjQtMC41LDAuMS0xLjhjMCwwLDAuOC02LjYsMC4yLTEzLjJjMCwwLTAuNC0yLTIuMy00LjUKCQkJYzAsMC04LjctMTMuNy0yOC42LTEzYzAsMC0xNy44LDAtMjYuMSwxNi4yYzAsMC0wLjksMS4zLTAuOSwzLjhjMCwwLTAuMiw0LjQsMS4zLDExLjJjMCwwLTAuNywyLjUsMywzLjhjMCwwLDEuMSwwLjMsMS45LDAuNAoJCQljMCwwLDEuMiwwLjIsMi4xLDAuM2MwLDAsMS4yLDYuNi01LjksMTAuMmMwLDAsMy43LDYuNiw1LjUsOC44aDIuNWMwLDAsNS43LTUuMiwxMS03YzAsMCwxNS45LTMuOCwyMC41LTEuMmMwLDAsNC41LDUsNS44LDcuNwoJCQljMCwwLDEuNC0wLjEsMi40LTAuMWMwLDAsNS02LjQsNi44LTguNkMtNTQ3LjYsNjA5LjMtNTUyLjcsNjA2LjMtNTUyLjYsNTk5LjV6Ii8+CgkJPHBhdGggaWQ9InBhdGgxMDA4MCIgY2xhc3M9InN0NCIgZD0iTS01NTIuNSw1OTAuOGMwLDAsMC40LDIyLjEtMjEuNywyMi45YzAsMC0yMi44LDItMjEuOC0yNS4zYzAsMCw0LjUtNi4xLDIwLjktNi44CgkJCUMtNTc1LjIsNTgxLjctNTYxLjIsNTgxLjEtNTUyLjUsNTkwLjgiLz4KCQk8cGF0aCBpZD0icGF0aDEwMDg0IiBjbGFzcz0ic3QxIiBkPSJNLTU1Mi41LDU5MC44YzAsMCwwLjQsMjIuMS0yMS43LDIyLjljMCwwLTIyLjgsMi0yMS44LTI1LjNjMCwwLDQuNS02LjEsMjAuOS02LjgKCQkJQy01NzUuMiw1ODEuNy01NjEuMiw1ODEuMS01NTIuNSw1OTAuOEwtNTUyLjUsNTkwLjh6Ii8+CgkJPHBhdGggaWQ9InBhdGgxMDA4OCIgY2xhc3M9InN0MSIgZD0iTS01NTIuNSw1OTAuOGMwLDAsMy4zLDMuOCwyLjcsNS4xYzAsMC0wLjQsMS4xLTIuNCwxLjMiLz4KCQk8cGF0aCBpZD0icGF0aDEwMDkyIiBjbGFzcz0ic3QxIiBkPSJNLTU5Ni4xLDU4OC41YzAsMC0yLjIsMi4xLTMuNSw0LjdjMCwwLTEuMSwyLjEtMC4yLDMuMmMwLDAsMC42LDEuMSwzLjIsMS4yIi8+CgkJPHBhdGggaWQ9InBhdGgxMDA5NiIgY2xhc3M9InN0MSIgZD0iTS01OTguOSw1OTIuMWMwLDAsMi4yLDMsMi43LDcuNSIvPgoJCTxwYXRoIGlkPSJwYXRoMTAxMDAiIGNsYXNzPSJzdDEiIGQ9Ik0tNTk0LjMsNjAxLjNjMCwwLDAuMyw0LjgtNS4xLDguNGMwLDAsMy45LDYuNyw1LjIsOC45Ii8+CgkJPHBhdGggaWQ9InBhdGgxMDEwNCIgY2xhc3M9InN0MSIgZD0iTS02MDIuMSw2MDkuOGMwLDAsMi4xLTAuMSwyLjgtMC4xIi8+CgkJPHBhdGggaWQ9InBhdGgxMDEwOCIgY2xhc3M9InN0MSIgZD0iTS02MDMuMiw1OTVjMCwwLDEuMS02LDguNS0xMC45YzAsMCw3LTUuNiwxOS42LTUuNWMwLDAsMTcuMi0wLjgsMjcsMTNjMCwwLDEuMiwxLjUsMS4zLDMuMSIKCQkJLz4KCQk8cGF0aCBpZD0icGF0aDEwMTEyIiBjbGFzcz0ic3QxIiBkPSJNLTU1NS4yLDYwMi4zYzAsMCwwLjksNC4xLDQuMSw2LjljMCwwLTQuNiw3LjEtNS43LDguNyIvPgoJCTxwYXRoIGlkPSJwYXRoMTAxMTYiIGNsYXNzPSJzdDEiIGQ9Ik0tNTQ3LjYsNjA5LjNjMCwwLTIuMy0wLjItMy40LTAuMiIvPgoJCTxwYXRoIGlkPSJwYXRoMTAxMjAiIGNsYXNzPSJzdDEiIGQ9Ik0tNTUyLjYsNTk5LjZjMCwwLDAuMy00LjYsMS41LTYuOSIvPgoJCTxwYXRoIGlkPSJwYXRoMTAxMjQiIGNsYXNzPSJzdDEiIGQ9Ik0tNTYzLjQsNTU1LjNjMCwwLTEuNi0zLjEtMTMuNC0zYzAsMC05LjksMC4zLTEzLjMsMi41Ii8+CgkJPHBhdGggaWQ9InBhdGgxMDEyOCIgY2xhc3M9InN0NCIgZD0iTS01NjMuNyw1NDAuNWMwLDAtMS4yLDIuOS0xLjgsNC41YzAsMCwwLjktMS40LDEuOS0zLjNDLTU2My42LDU0MS43LTU2My42LDU0MC41LTU2My43LDU0MC41CgkJCSIvPgoJCTxwYXRoIGlkPSJwYXRoMTAxMzIiIGNsYXNzPSJzdDQiIGQ9Ik0tNTY2LjQsNTM5LjNjLTAuMywxLTAuOCwyLjQtMS4zLDQuOGMwLjQtMC43LDAuNi0xLjIsMS43LTQuNAoJCQlDLTU2NS45LDUzOS43LTU2Ni4xLDUzOC40LTU2Ni40LDUzOS4zIi8+CgkJPHBhdGggaWQ9InBhdGgxMDEzNiIgY2xhc3M9InN0NCIgZD0iTS01NzQuNCw1MzdjLTAuMSwxLjEtMC4xLDMuOS0wLjEsNS4zYzAsMCwwLjQtMS4zLDAuNi00LjkKCQkJQy01NzMuOSw1MzcuNC01NzQuMiw1MzYuOS01NzQuNCw1MzciLz4KCQk8cGF0aCBpZD0icGF0aDEwMTQwIiBjbGFzcz0ic3Q0IiBkPSJNLTU4My4zLDUzOC4xYzAsMCwwLjQsMy44LDAuNSw0LjhjMCwwLTAuNS0xLjEtMS0zLjhDLTU4My43LDUzOS4xLTU4My40LDUzOC01ODMuMyw1MzguMSIvPgoJCTxwYXRoIGlkPSJwYXRoMTAxNDQiIGNsYXNzPSJzdDQiIGQ9Ik0tNTg2LjIsNTM5LjNjMCwwLDEuNCw0LjEsMiw1LjRjMCwwLTAuNC0xLjktMS40LTUuM0MtNTg1LjYsNTM5LjQtNTg2LjIsNTM5LjEtNTg2LjIsNTM5LjMiCgkJCS8+CgkJPHBhdGggaWQ9InBhdGgxMDE0OCIgY2xhc3M9InN0NSIgZD0iTS01ODcuNCw1ODMuN2MwLDAtMS4xLDUuNiwwLjEsMTIuMmMwLDAsMS43LDEwLjgsNi45LDEwLjVjMCwwLDQuNSwwLDQuNS0xMi44CgkJCWMwLDAtMC4xLTcuNy0yLTExLjdDLTU3OCw1ODEuOS01ODIuOCw1ODItNTg3LjQsNTgzLjciLz4KCQk8cGF0aCBpZD0icGF0aDEwMTUyIiBjbGFzcz0ic3QxIiBkPSJNLTU4Ny40LDU4My43YzAsMC0xLjEsNS42LDAuMSwxMi4yYzAsMCwxLjcsMTAuOCw2LjksMTAuNWMwLDAsNC41LDAsNC41LTEyLjgKCQkJYzAsMC0wLjEtNy43LTItMTEuN0MtNTc4LDU4MS45LTU4Mi44LDU4Mi01ODcuNCw1ODMuN0wtNTg3LjQsNTgzLjd6Ii8+CgkJPHBhdGggaWQ9InBhdGgxMDE1NiIgY2xhc3M9InN0NSIgZD0iTS01NzEuOCw1ODEuOWMwLDAtMS44LDQuMS0xLjYsMTJjMCwwLTAuMSwxMS4zLDQuNCwxMS44YzAsMCw1LDAuOSw2LjQtMTAuNgoJCQljMCwwLDEuMS02LjktMC4xLTExLjNDLTU2Mi44LDU4My45LTU2Ny43LDU4Mi01NzEuOCw1ODEuOSIvPgoJCTxwYXRoIGlkPSJwYXRoMTAxNjAiIGNsYXNzPSJzdDEiIGQ9Ik0tNTcxLjgsNTgxLjljMCwwLTEuOCw0LjEtMS42LDEyYzAsMC0wLjEsMTEuMyw0LjQsMTEuOGMwLDAsNSwwLjksNi40LTEwLjYKCQkJYzAsMCwxLjEtNi45LTAuMS0xMS4zQy01NjIuOCw1ODMuOS01NjcuNyw1ODItNTcxLjgsNTgxLjl6Ii8+CgkJPHBhdGggaWQ9InBhdGgxMDMyNCIgY2xhc3M9InN0MSIgZD0iTS01NzksNTU5LjdjLTEuNC0yLjgtMC44LTYuNCwzLjYtNmM0LDAuNCwzLjQsMy4zLDMuMSw2LjEKCQkJQy01NzIuMyw1NTkuOC01NzQuNiw1NTkuNC01NzksNTU5Ljd6Ii8+CgkJPHBhdGggaWQ9InBhdGgxMDM2MCIgY2xhc3M9InN0NCIgZD0iTS01NzAuNCw1OTcuNmMwLjYsMCwxLjItMS4xLDEuMy0yLjVjMC4xLTEuNC0wLjQtMi42LTEtMi42Yy0wLjYsMC0xLjIsMS4xLTEuMywyLjUKCQkJQy01NzEuNSw1OTYuNC01NzEuMSw1OTcuNi01NzAuNCw1OTcuNiIvPgoJCTxwYXRoIGlkPSJwYXRoMTAzNjQiIGNsYXNzPSJzdDEiIGQ9Ik0tNTcwLjQsNTk3LjZjMC42LDAsMS4yLTEuMSwxLjMtMi41YzAuMS0xLjQtMC40LTIuNi0xLTIuNmMtMC42LDAtMS4yLDEuMS0xLjMsMi41CgkJCUMtNTcxLjUsNTk2LjQtNTcxLjEsNTk3LjYtNTcwLjQsNTk3LjZ6Ii8+CgkJPHBhdGggaWQ9InBhdGgxMDM2OCIgY2xhc3M9InN0NCIgZD0iTS01NzguNyw1OTcuN2MwLjYsMCwxLjItMS4xLDEuMy0yLjVjMC4xLTEuNC0wLjQtMi42LTEtMi42Yy0wLjYsMC0xLjIsMS4xLTEuMywyLjUKCQkJQy01NzkuOCw1OTYuNS01NzkuMyw1OTcuNi01NzguNyw1OTcuNyIvPgoJCTxwYXRoIGlkPSJwYXRoMTAzNzIiIGNsYXNzPSJzdDEiIGQ9Ik0tNTc4LjcsNTk3LjdjMC42LDAsMS4yLTEuMSwxLjMtMi41YzAuMS0xLjQtMC40LTIuNi0xLTIuNmMtMC42LDAtMS4yLDEuMS0xLjMsMi41CgkJCUMtNTc5LjgsNTk2LjUtNTc5LjMsNTk3LjYtNTc4LjcsNTk3Ljd6Ii8+Cgk8L2c+CjwvZz4KPC9zdmc+Cg==","payload_type":"image\/svg+xml;base64","associated_login":{"id":11,"name":"Marvin","lang":"en","login_id":"Marvin","write_token":11,"last_access":"2018-06-17 17:00:02","writeable":true,"user_object_id":7,"security_tokens":[11],"password":"6f2T8rK4"}}}}}
Yeah, it's big and fugly, but it is completely valid.
When I feed it to JSONLint, I get a nice green bar and well-formatted JSON:
{
"people": {
"people": {
"new_user": {
"id": 7,
"name": "Marvin",
"lang": "en",
"read_token": 1,
"write_token": 11,
"last_access": "2018-06-17 16:56:49",
"writeable": true,
"surname": "Martian",
"middle_name": "D",
"given_name": "Marvin",
"nickname": "Angry Little Fella",
"payload": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDIyLjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIKCSBpZD0ic3ZnMjczMzMiIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIiB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgoJIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTU2LjggMjE5LjMiCgkgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMTU2LjggMjE5LjM7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5zdDB7ZmlsbDojRkZFODZFO30KCS5zdDF7ZmlsbDpub25lO3N0cm9rZTojMjMxRjIwO3N0cm9rZS13aWR0aDoxLjI1O30KCS5zdDJ7ZmlsbDojRThBRTEwO30KCS5zdDN7ZmlsbDojNTlBRDQwO30KCS5zdDR7ZmlsbDojMjMxRjIwO30KCS5zdDV7ZmlsbDojRkZGRkZGO30KPC9zdHlsZT4KPGcgaWQ9ImxheWVyMSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzQwLjIwOTM3LC0xMTIuNzAzNzcpIj4KCTxnIGlkPSJnMjcxMTQiIHRyYW5zZm9ybT0ibWF0cml4KDIuNjQ4NDAxNCwwLDAsMi42NDg0MDE0LDEyNjIuNDMzMSwtMTMwNi45NTEzKSI+CgkJPHBhdGggaWQ9InBhdGgxMDA0MCIgY2xhc3M9InN0MCIgZD0iTS01NjQuNyw1NTEuNGMwLjEsMCwyLjItNy4zLDMuMy05YzAsMC0xLjMtMC43LTIuMy0xYzAsMCwwLjMtMC43LDAuNC0xYzAsMC0xLjEtMC43LTIuOC0xCgkJCWMwLDAsMC4yLTAuOSwwLjMtMS4xYzAsMC00LjItMS42LTguMy0xYzAsMCwwLTAuNSwwLTAuN2MwLDAtNS41LTEuMS05LjUsMS4zYzAsMCwwLjEsMC43LDAuMSwwLjljMCwwLTEuMywwLjItMi4zLDAuNgoJCQljMCwwLTAuMS0wLjMtMC4yLTAuNmMwLDAtMy44LDEuNi01LDQuNmMwLDAsMiwzLjksMyw4Qy01ODgsNTUxLjYtNTY5LDU1Mi01NjQuNyw1NTEuNCIvPgoJCTxwYXRoIGlkPSJwYXRoMTAwNDQiIGNsYXNzPSJzdDEiIGQ9Ik0tNTY0LjcsNTUxLjRjMC4xLDAsMi4yLTcuMywzLjMtOWMwLDAtMS4zLTAuNy0yLjMtMWMwLDAsMC4zLTAuNywwLjQtMWMwLDAtMS4xLTAuNy0yLjgtMQoJCQljMCwwLDAuMi0wLjksMC4zLTEuMWMwLDAtNC4yLTEuNi04LjMtMWMwLDAsMC0wLjUsMC0wLjdjMCwwLTUuNS0xLjEtOS41LDEuM2MwLDAsMC4xLDAuNywwLjEsMC45YzAsMC0xLjMsMC4yLTIuMywwLjYKCQkJYzAsMC0wLjEtMC4zLTAuMi0wLjZjMCwwLTMuOCwxLjYtNSw0LjZjMCwwLDIsMy45LDMsOEMtNTg4LDU1MS42LTU2OSw1NTItNTY0LjcsNTUxLjRMLTU2NC43LDU1MS40eiIvPgoJCTxwYXRoIGlkPSJwYXRoMTAwNDgiIGNsYXNzPSJzdDIiIGQ9Ik0tNTY2LjQsNTYxLjZjMCwwLDIuNi01LjEsMy02LjNjMCwwLDAuNi0wLjksMC40LTNjMCwwLDAtMS0yLjctMS45YzAsMC0xMS40LTMuOC0yMi41LDAuMgoJCQljMCwwLTAuNywwLjItMS4yLDEuNGMwLDAtMC40LDAuOS0wLjcsMmMwLDAtMC4xLDAuNywwLjMsMS42YzAsMCwyLjIsNC4zLDQsNi42Qy01ODUuNyw1NjIuMS01NjkuNiw1NjMuNS01NjYuNCw1NjEuNiIvPgoJCTxwYXRoIGlkPSJwYXRoMTAwNTIiIGNsYXNzPSJzdDEiIGQ9Ik0tNTY2LjQsNTYxLjZjMCwwLDIuNi01LjEsMy02LjNjMCwwLDAuNi0wLjksMC40LTNjMCwwLDAtMS0yLjctMS45YzAsMC0xMS40LTMuOC0yMi41LDAuMgoJCQljMCwwLTAuNywwLjItMS4yLDEuNGMwLDAtMC40LDAuOS0wLjcsMmMwLDAtMC4xLDAuNywwLjMsMS42YzAsMCwyLjIsNC4zLDQsNi42Qy01ODUuNyw1NjIuMS01NjkuNiw1NjMuNS01NjYuNCw1NjEuNgoJCQlMLTU2Ni40LDU2MS42eiIvPgoJCTxwYXRoIGlkPSJwYXRoMTAwNTYiIGNsYXNzPSJzdDIiIGQ9Ik0tNTczLjksNTYwLjRjMCwwLDAtMS43LDAtMi42YzAsMCwwLjEtMS41LTAuOS0xLjdjMCwwLTEuMy0wLjYtMi41LDAuMWMwLDAtMC43LDAuMy0wLjYsMS43CgkJCWMwLDAsMCwyLjMsMCwyLjhDLTU3Ny44LDU2MC42LTU3NC44LDU2MS41LTU3My45LDU2MC40Ii8+CgkJPHBhdGggaWQ9InBhdGgxMDA2MCIgY2xhc3M9InN0MSIgZD0iTS01NzMuOSw1NjAuNGMwLDAsMC0xLjcsMC0yLjZjMCwwLDAuMS0xLjUtMC45LTEuN2MwLDAtMS4zLTAuNi0yLjUsMC4xYzAsMC0wLjcsMC4zLTAuNiwxLjcKCQkJYzAsMCwwLDIuMywwLDIuOEMtNTc3LjgsNTYwLjYtNTc0LjgsNTYxLjUtNTczLjksNTYwLjRMLTU3My45LDU2MC40eiIvPgoJCTxwYXRoIGlkPSJwYXRoMTAwNjQiIGNsYXNzPSJzdDMiIGQ9Ik0tNTUwLjMsNTc1LjRjMCwwLTUuNy0xNi4xLTI2LjItMTUuOWMwLDAtMTktMC45LTI1LjYsMTguNgoJCQlDLTYwMi4xLDU3OC4yLTU3NCw1NjkuMi01NTAuMyw1NzUuNCIvPgoJCTxwYXRoIGlkPSJwYXRoMTAwNjgiIGNsYXNzPSJzdDEiIGQ9Ik0tNTUwLjMsNTc1LjRjMCwwLTUuNy0xNi4xLTI2LjItMTUuOWMwLDAtMTktMC45LTI1LjYsMTguNgoJCQlDLTYwMi4xLDU3OC4yLTU3NCw1NjkuMi01NTAuMyw1NzUuNHoiLz4KCQk8cGF0aCBpZD0icGF0aDEwMDcyIiBjbGFzcz0ic3QzIiBkPSJNLTU1Mi42LDU5OS41YzAsMCw1LTAuNiw1LjYtMy4xYzAsMCwwLjQtMC41LDAuMS0xLjhjMCwwLDAuOC02LjYsMC4yLTEzLjJjMCwwLTAuNC0yLTIuMy00LjUKCQkJYzAsMC04LjctMTMuNy0yOC42LTEzYzAsMC0xNy44LDAtMjYuMSwxNi4yYzAsMC0wLjksMS4zLTAuOSwzLjhjMCwwLTAuMiw0LjQsMS4zLDExLjJjMCwwLTAuNywyLjUsMywzLjhjMCwwLDEuMSwwLjMsMS45LDAuNAoJCQljMCwwLDEuMiwwLjIsMi4xLDAuM2MwLDAsMS4yLDYuNi01LjksMTAuMmMwLDAsMy43LDYuNiw1LjUsOC44aDIuNWMwLDAsNS43LTUuMiwxMS03YzAsMCwxNS45LTMuOCwyMC41LTEuMmMwLDAsNC41LDUsNS44LDcuNwoJCQljMCwwLDEuNC0wLjEsMi40LTAuMWMwLDAsNS02LjQsNi44LTguNkMtNTQ3LjYsNjA5LjMtNTUyLjcsNjA2LjMtNTUyLjYsNTk5LjUiLz4KCQk8cGF0aCBpZD0icGF0aDEwMDc2IiBjbGFzcz0ic3QxIiBkPSJNLTU1Mi42LDU5OS41YzAsMCw1LTAuNiw1LjYtMy4xYzAsMCwwLjQtMC41LDAuMS0xLjhjMCwwLDAuOC02LjYsMC4yLTEzLjJjMCwwLTAuNC0yLTIuMy00LjUKCQkJYzAsMC04LjctMTMuNy0yOC42LTEzYzAsMC0xNy44LDAtMjYuMSwxNi4yYzAsMC0wLjksMS4zLTAuOSwzLjhjMCwwLTAuMiw0LjQsMS4zLDExLjJjMCwwLTAuNywyLjUsMywzLjhjMCwwLDEuMSwwLjMsMS45LDAuNAoJCQljMCwwLDEuMiwwLjIsMi4xLDAuM2MwLDAsMS4yLDYuNi01LjksMTAuMmMwLDAsMy43LDYuNiw1LjUsOC44aDIuNWMwLDAsNS43LTUuMiwxMS03YzAsMCwxNS45LTMuOCwyMC41LTEuMmMwLDAsNC41LDUsNS44LDcuNwoJCQljMCwwLDEuNC0wLjEsMi40LTAuMWMwLDAsNS02LjQsNi44LTguNkMtNTQ3LjYsNjA5LjMtNTUyLjcsNjA2LjMtNTUyLjYsNTk5LjV6Ii8+CgkJPHBhdGggaWQ9InBhdGgxMDA4MCIgY2xhc3M9InN0NCIgZD0iTS01NTIuNSw1OTAuOGMwLDAsMC40LDIyLjEtMjEuNywyMi45YzAsMC0yMi44LDItMjEuOC0yNS4zYzAsMCw0LjUtNi4xLDIwLjktNi44CgkJCUMtNTc1LjIsNTgxLjctNTYxLjIsNTgxLjEtNTUyLjUsNTkwLjgiLz4KCQk8cGF0aCBpZD0icGF0aDEwMDg0IiBjbGFzcz0ic3QxIiBkPSJNLTU1Mi41LDU5MC44YzAsMCwwLjQsMjIuMS0yMS43LDIyLjljMCwwLTIyLjgsMi0yMS44LTI1LjNjMCwwLDQuNS02LjEsMjAuOS02LjgKCQkJQy01NzUuMiw1ODEuNy01NjEuMiw1ODEuMS01NTIuNSw1OTAuOEwtNTUyLjUsNTkwLjh6Ii8+CgkJPHBhdGggaWQ9InBhdGgxMDA4OCIgY2xhc3M9InN0MSIgZD0iTS01NTIuNSw1OTAuOGMwLDAsMy4zLDMuOCwyLjcsNS4xYzAsMC0wLjQsMS4xLTIuNCwxLjMiLz4KCQk8cGF0aCBpZD0icGF0aDEwMDkyIiBjbGFzcz0ic3QxIiBkPSJNLTU5Ni4xLDU4OC41YzAsMC0yLjIsMi4xLTMuNSw0LjdjMCwwLTEuMSwyLjEtMC4yLDMuMmMwLDAsMC42LDEuMSwzLjIsMS4yIi8+CgkJPHBhdGggaWQ9InBhdGgxMDA5NiIgY2xhc3M9InN0MSIgZD0iTS01OTguOSw1OTIuMWMwLDAsMi4yLDMsMi43LDcuNSIvPgoJCTxwYXRoIGlkPSJwYXRoMTAxMDAiIGNsYXNzPSJzdDEiIGQ9Ik0tNTk0LjMsNjAxLjNjMCwwLDAuMyw0LjgtNS4xLDguNGMwLDAsMy45LDYuNyw1LjIsOC45Ii8+CgkJPHBhdGggaWQ9InBhdGgxMDEwNCIgY2xhc3M9InN0MSIgZD0iTS02MDIuMSw2MDkuOGMwLDAsMi4xLTAuMSwyLjgtMC4xIi8+CgkJPHBhdGggaWQ9InBhdGgxMDEwOCIgY2xhc3M9InN0MSIgZD0iTS02MDMuMiw1OTVjMCwwLDEuMS02LDguNS0xMC45YzAsMCw3LTUuNiwxOS42LTUuNWMwLDAsMTcuMi0wLjgsMjcsMTNjMCwwLDEuMiwxLjUsMS4zLDMuMSIKCQkJLz4KCQk8cGF0aCBpZD0icGF0aDEwMTEyIiBjbGFzcz0ic3QxIiBkPSJNLTU1NS4yLDYwMi4zYzAsMCwwLjksNC4xLDQuMSw2LjljMCwwLTQuNiw3LjEtNS43LDguNyIvPgoJCTxwYXRoIGlkPSJwYXRoMTAxMTYiIGNsYXNzPSJzdDEiIGQ9Ik0tNTQ3LjYsNjA5LjNjMCwwLTIuMy0wLjItMy40LTAuMiIvPgoJCTxwYXRoIGlkPSJwYXRoMTAxMjAiIGNsYXNzPSJzdDEiIGQ9Ik0tNTUyLjYsNTk5LjZjMCwwLDAuMy00LjYsMS41LTYuOSIvPgoJCTxwYXRoIGlkPSJwYXRoMTAxMjQiIGNsYXNzPSJzdDEiIGQ9Ik0tNTYzLjQsNTU1LjNjMCwwLTEuNi0zLjEtMTMuNC0zYzAsMC05LjksMC4zLTEzLjMsMi41Ii8+CgkJPHBhdGggaWQ9InBhdGgxMDEyOCIgY2xhc3M9InN0NCIgZD0iTS01NjMuNyw1NDAuNWMwLDAtMS4yLDIuOS0xLjgsNC41YzAsMCwwLjktMS40LDEuOS0zLjNDLTU2My42LDU0MS43LTU2My42LDU0MC41LTU2My43LDU0MC41CgkJCSIvPgoJCTxwYXRoIGlkPSJwYXRoMTAxMzIiIGNsYXNzPSJzdDQiIGQ9Ik0tNTY2LjQsNTM5LjNjLTAuMywxLTAuOCwyLjQtMS4zLDQuOGMwLjQtMC43LDAuNi0xLjIsMS43LTQuNAoJCQlDLTU2NS45LDUzOS43LTU2Ni4xLDUzOC40LTU2Ni40LDUzOS4zIi8+CgkJPHBhdGggaWQ9InBhdGgxMDEzNiIgY2xhc3M9InN0NCIgZD0iTS01NzQuNCw1MzdjLTAuMSwxLjEtMC4xLDMuOS0wLjEsNS4zYzAsMCwwLjQtMS4zLDAuNi00LjkKCQkJQy01NzMuOSw1MzcuNC01NzQuMiw1MzYuOS01NzQuNCw1MzciLz4KCQk8cGF0aCBpZD0icGF0aDEwMTQwIiBjbGFzcz0ic3Q0IiBkPSJNLTU4My4zLDUzOC4xYzAsMCwwLjQsMy44LDAuNSw0LjhjMCwwLTAuNS0xLjEtMS0zLjhDLTU4My43LDUzOS4xLTU4My40LDUzOC01ODMuMyw1MzguMSIvPgoJCTxwYXRoIGlkPSJwYXRoMTAxNDQiIGNsYXNzPSJzdDQiIGQ9Ik0tNTg2LjIsNTM5LjNjMCwwLDEuNCw0LjEsMiw1LjRjMCwwLTAuNC0xLjktMS40LTUuM0MtNTg1LjYsNTM5LjQtNTg2LjIsNTM5LjEtNTg2LjIsNTM5LjMiCgkJCS8+CgkJPHBhdGggaWQ9InBhdGgxMDE0OCIgY2xhc3M9InN0NSIgZD0iTS01ODcuNCw1ODMuN2MwLDAtMS4xLDUuNiwwLjEsMTIuMmMwLDAsMS43LDEwLjgsNi45LDEwLjVjMCwwLDQuNSwwLDQuNS0xMi44CgkJCWMwLDAtMC4xLTcuNy0yLTExLjdDLTU3OCw1ODEuOS01ODIuOCw1ODItNTg3LjQsNTgzLjciLz4KCQk8cGF0aCBpZD0icGF0aDEwMTUyIiBjbGFzcz0ic3QxIiBkPSJNLTU4Ny40LDU4My43YzAsMC0xLjEsNS42LDAuMSwxMi4yYzAsMCwxLjcsMTAuOCw2LjksMTAuNWMwLDAsNC41LDAsNC41LTEyLjgKCQkJYzAsMC0wLjEtNy43LTItMTEuN0MtNTc4LDU4MS45LTU4Mi44LDU4Mi01ODcuNCw1ODMuN0wtNTg3LjQsNTgzLjd6Ii8+CgkJPHBhdGggaWQ9InBhdGgxMDE1NiIgY2xhc3M9InN0NSIgZD0iTS01NzEuOCw1ODEuOWMwLDAtMS44LDQuMS0xLjYsMTJjMCwwLTAuMSwxMS4zLDQuNCwxMS44YzAsMCw1LDAuOSw2LjQtMTAuNgoJCQljMCwwLDEuMS02LjktMC4xLTExLjNDLTU2Mi44LDU4My45LTU2Ny43LDU4Mi01NzEuOCw1ODEuOSIvPgoJCTxwYXRoIGlkPSJwYXRoMTAxNjAiIGNsYXNzPSJzdDEiIGQ9Ik0tNTcxLjgsNTgxLjljMCwwLTEuOCw0LjEtMS42LDEyYzAsMC0wLjEsMTEuMyw0LjQsMTEuOGMwLDAsNSwwLjksNi40LTEwLjYKCQkJYzAsMCwxLjEtNi45LTAuMS0xMS4zQy01NjIuOCw1ODMuOS01NjcuNyw1ODItNTcxLjgsNTgxLjl6Ii8+CgkJPHBhdGggaWQ9InBhdGgxMDMyNCIgY2xhc3M9InN0MSIgZD0iTS01NzksNTU5LjdjLTEuNC0yLjgtMC44LTYuNCwzLjYtNmM0LDAuNCwzLjQsMy4zLDMuMSw2LjEKCQkJQy01NzIuMyw1NTkuOC01NzQuNiw1NTkuNC01NzksNTU5Ljd6Ii8+CgkJPHBhdGggaWQ9InBhdGgxMDM2MCIgY2xhc3M9InN0NCIgZD0iTS01NzAuNCw1OTcuNmMwLjYsMCwxLjItMS4xLDEuMy0yLjVjMC4xLTEuNC0wLjQtMi42LTEtMi42Yy0wLjYsMC0xLjIsMS4xLTEuMywyLjUKCQkJQy01NzEuNSw1OTYuNC01NzEuMSw1OTcuNi01NzAuNCw1OTcuNiIvPgoJCTxwYXRoIGlkPSJwYXRoMTAzNjQiIGNsYXNzPSJzdDEiIGQ9Ik0tNTcwLjQsNTk3LjZjMC42LDAsMS4yLTEuMSwxLjMtMi41YzAuMS0xLjQtMC40LTIuNi0xLTIuNmMtMC42LDAtMS4yLDEuMS0xLjMsMi41CgkJCUMtNTcxLjUsNTk2LjQtNTcxLjEsNTk3LjYtNTcwLjQsNTk3LjZ6Ii8+CgkJPHBhdGggaWQ9InBhdGgxMDM2OCIgY2xhc3M9InN0NCIgZD0iTS01NzguNyw1OTcuN2MwLjYsMCwxLjItMS4xLDEuMy0yLjVjMC4xLTEuNC0wLjQtMi42LTEtMi42Yy0wLjYsMC0xLjIsMS4xLTEuMywyLjUKCQkJQy01NzkuOCw1OTYuNS01NzkuMyw1OTcuNi01NzguNyw1OTcuNyIvPgoJCTxwYXRoIGlkPSJwYXRoMTAzNzIiIGNsYXNzPSJzdDEiIGQ9Ik0tNTc4LjcsNTk3LjdjMC42LDAsMS4yLTEuMSwxLjMtMi41YzAuMS0xLjQtMC40LTIuNi0xLTIuNmMtMC42LDAtMS4yLDEuMS0xLjMsMi41CgkJCUMtNTc5LjgsNTk2LjUtNTc5LjMsNTk3LjYtNTc4LjcsNTk3Ljd6Ii8+Cgk8L2c+CjwvZz4KPC9zdmc+Cg==",
"payload_type": "image\/svg+xml;base64",
"associated_login": {
"id": 11,
"name": "Marvin",
"lang": "en",
"login_id": "Marvin",
"write_token": 11,
"last_access": "2018-06-17 16:56:49",
"writeable": true,
"user_object_id": 7,
"security_tokens": [11],
"password": "TuqWG+%y"
}
}
}
}
}
Nevertheless, feeding this JSON to PHP 7.2.1's json_decode() function keeps returning a JSON_ERROR_SYNTAX error (bad syntax).
I think the issue may be with the data in the SVG file, but that is valid Base64 data. It should be fine in JSON.
I tried all the various solutions mentioned in other posts, but still no dice.
Any ideas?
UPDATE: Here's the PHP code that I run it through:
echo('RESULT:<pre>');
var_dump(json_decode($result));
switch (json_last_error()) {
case JSON_ERROR_NONE:
echo ' - No errors';
break;
case JSON_ERROR_DEPTH:
echo ' - Maximum stack depth exceeded';
break;
case JSON_ERROR_STATE_MISMATCH:
echo ' - Underflow or the modes mismatch';
break;
case JSON_ERROR_CTRL_CHAR:
echo ' - Unexpected control character found';
break;
case JSON_ERROR_SYNTAX:
echo ' - Syntax error, malformed JSON';
break;
case JSON_ERROR_UTF8:
echo ' - Malformed UTF-8 characters, possibly incorrectly encoded';
break;
default:
echo ' - Unknown error';
break;
}
echo('</pre>');
That code, in my server/laptop, is what's exposing it.
UPDATE 2: This is the dump from my cURL routine, showing the response:
string(10159) "HTTP/1.1 200 OK
Date: Sun, 17 Jun 2018 17:29:35 GMT
Server: Apache
X-Powered-By: PHP/7.2.1
Content-Length: 10007
Content-Type: application/json
{"people":{"people":{"new_user":{"id":7,"name":"Marvin","lang":"en","read_token":1,"write_token":11,"last_access":"2018-06-17 17:29:35","writeable":true,"surname":"Martian","middle_name":"D","given_name":"Marvin","nickname":"Angry Little Fella","payload":"<REMOVED FOR BREVITY>","payload_type":"image\/svg+xml;base64","associated_login":{"id":11,"name":"Marvin","lang":"en","login_id":"Marvin","write_token":11,"last_access":"2018-06-17 17:29:35","writeable":true,"user_object_id":7,"security_tokens":[11],"password":"1Jq6$oT0"}}}}}"
OK. I wanted to let y'all know what happened. It ain't an answer, but it will be the one I greencheck.
I took off and nuked it from orbit, and now it works.
I have to assume that I did something that sent invisible characters that didn't make it into copy and paste, so the JSONLint never saw them. I'll bet if I had cURLed or wgetted straight from the test harness, it would have borked.
This is a warning to me: Don't get too feisty with the CLI. I'm maybe not as hot at this stuff as I'd like to think.
Thanks for the help, folks.
Fetching BLOB from mysql
$sql = "SELECT data as datajson FROM tablename";
$res=$obj->_executeQuery($sql);
$res=$obj->getAll($res);
$blobdata = $res[0]['datajson'];
My json data from BLOB looks like this
[{"name":"propose","value":"Propose~sample"},
{"name":"expenseamount","value":"Expense Amount~15246"},
{"name":"paymenttype","value":"Payment Type~ Cash"},
{"name":"img0","value":"/9j/4AAQSkZHIjks........61A/3qBo/9k="},
{"name":"img1","value":"NO"}]
Now
{"name":"img0","value":"/9j/4AAQSkZHIjks........61A/3qBo/9k="}
This pair is a base 64 string which is included in my BLOB. And when i did json_decode($blobdata); i am getting null
The exact base64 string can be found in JSFIDDLE
I have added json_last_error(); in my code
switch (json_last_error()) {
case JSON_ERROR_NONE:
echo ' - No errors';
break;
case JSON_ERROR_DEPTH:
echo ' - Maximum stack depth exceeded';
break;
case JSON_ERROR_STATE_MISMATCH:
echo ' - Underflow or the modes mismatch';
break;
case JSON_ERROR_CTRL_CHAR:
echo ' - Unexpected control character found';
break;
case JSON_ERROR_SYNTAX:
echo ' - Syntax error, malformed JSON';
break;
case JSON_ERROR_UTF8:
echo ' - Malformed UTF-8 characters, possibly incorrectly encoded';
break;
default:
echo ' - Unknown error';
break;
}
Which returns - Syntax error, malformed JSON and
json_decode does not work, since this is not a proper json
I want the details other than img0 and img1
1 . Now how do i remove the last two pairs (img0, img1) BEFORE json_decode, so that this becomes valid json.
2 . Or how to convert the base64 string to become proper json
UPDATE
This is how BLOB data is storing in mysql
foreach($_REQUEST as $key=>$value)
{
$raw_data[] = array('name' => $key, 'value' => $value);
}
$json = json_encode($raw_data);
$sql="INSERT INTO tablename (data) VALUES ('$json')";
I am trying to get post details using JSON in wordpress. In my plugin following is the json_decode part. But it returns null.
$post_count = intval($instance['post_count']);
$eng_posts= #json_decode(file_get_contents("http://athavaneng.com/?page_id=206861&posts_per_page=".$post_count), true);
switch (json_last_error()) {
case JSON_ERROR_NONE:
echo ' - No errors';
break;
case JSON_ERROR_DEPTH:
echo ' - Maximum stack depth exceeded';
break;
case JSON_ERROR_STATE_MISMATCH:
echo ' - Underflow or the modes mismatch';
break;
case JSON_ERROR_CTRL_CHAR:
echo ' - Unexpected control character found';
break;
case JSON_ERROR_SYNTAX:
echo ' - Syntax error, malformed JSON';
break;
case JSON_ERROR_UTF8:
echo ' - Malformed UTF-8 characters, possibly incorrectly encoded';
break;
default:
echo ' - Unknown error';
break;
}
In the above code I get a JSON_ERROR_SYNTAX error. But actually when I test the returning JSON data of http://athavaneng.com/?page_id=206861 URL on the http://jsonlint.com. It says that "Valid JSON".
Why is that? What is the problem here?
The responding server is sending 3 strange chars before it starts the json output. By doing this:
$var = file_get_contents("http://athavaneng.com/?page_id=206861&posts_per_page=1");
for($i=0; $i<10; $i++) {
echo $var[$i] . " : " . ord($var[$i]) . "<br />";
}
you will get something like this:
ï : 239
» : 187
¿ : 191
{ : 123
" : 34
1 : 49
" : 34
: : 58
{ : 123
" : 34
the first three chars (239,187 and 191) should not been printed by the server. As a workaround you should be able to parse it after stripping the first three chars.
I am able to parse your json with the following code, which beginns reading at character 3:
$var = file_get_contents("http://athavaneng.com/?page_id=206861&posts_per_page=1", false, NULL, 3);
var_export(json_decode($var));
Can't seem to find the solution to this, I want to load json data from a view variable like this
$this->json = $this->load->view('/jsonfiles/page.json','',true);
Outputting
var_dump(json_decode($this->json,true));
= NULL
The View seems to be rendering the .json file incorrectly, for the json_decode to fail. (maybe not incorrectly, but in a different format), Ive already tried to utf8_encode, no luck
JSON Variable within the page.json
[
{
"page" : {
"name" : "PageNameHere",
"date" : true
}
}
]
Or is there an alternative to doing this?
UPDATE: Yes it works when its an actual string in the variable like this
$this->json = '[{"page":{"name":"PageNameHere","date":true}}]';
var_dump(json_decode($this->json,true));
SOLUTION: So I've decided to figure this out one, and by my mistake, I had a "," comma in the last part of my JSON, which wasn't in this thread, I shorten the JSON for topic, but I found it, using this neat error switch, able to find JSON rendering errors
switch (json_last_error()) {
case JSON_ERROR_NONE:
echo ' - No errors';
break;
case JSON_ERROR_DEPTH:
echo ' - Maximum stack depth exceeded';
break;
case JSON_ERROR_STATE_MISMATCH:
echo ' - Underflow or the modes mismatch';
break;
case JSON_ERROR_CTRL_CHAR:
echo ' - Unexpected control character found';
break;
case JSON_ERROR_SYNTAX:
echo ' - Syntax error, malformed JSON';
break;
case JSON_ERROR_UTF8:
echo ' - Malformed UTF-8 characters, possibly incorrectly encoded';
break;
default:
echo ' - Unknown error';
break;
}
My Issue was labeled as "Syntax error, malformed JSON"