I’m pulling a JSON feed that is invalid JSON. It’s missing quotes entirely. I’ve tried a few things, like explode()
and str_replace()
, to get the string looking a little bit more like valid JSON, but with an associate JSON string inside, it generally gets screwed up.
Here’s an example:
id:43015,name:'John Doe',level:15,systems:[{t:6,glr:1242,n:'server',s:185,c:9}],classs:0,subclass:5
Are there any JSON parsers for php out there that can handle invalid JSON like this?
Edit: I’m trying to use json_decode()
on this string. It returns nothing.
Advertisement
Answer
- All the quotes should be double quotes
"
and not single quotes'
. - All the keys should be quoted.
- The whole element should be an object.
function my_json_decode($s) { $s = str_replace( array('"', "'"), array('"', '"'), $s ); $s = preg_replace('/(w+):/i', '"1":', $s); return json_decode(sprintf('{%s}', $s)); }