我有JSON格式错误的JSON文件,我想用PHP代码解决这个问题。
这是我的JSON:
x: 322.5, y: 174, colors: #000000, removable: true, draggable: true, rotatable: true, resizable: true, scale: 1, degree: 0, price: 0, boundingBox: false, textSize: 22, source: , originX: 322.5, originY: 174, currentColor: #000000, text: დედა, font: Arial
固定输出:
"x": 322.5, "y": 174, "colors": "#000000", "removable": true, "draggable": true, "rotatable": true, "resizable": true, "scale": 1, "degree": 0, "price": 0, "boundingBox": false, "textSize": 22, "source": , "originX": 322.5, "originY": 174, "currentColor": "#000000", "text": "დედა", "font": "Arial"
如何更正我的JSON? PHP可以处理吗?
答案 0 :(得分:1)
这里没有快速解决方法。这个特定的例子很容易解析,因为它没有嵌套,所以你可以使用PHP的正则表达式为它编写一个简单的解析器,做出某些假设(所有数值的属性应该是数字,true
并且false
应该是布尔值而不是字符串,应该完全删除完全空的属性,而其他所有内容都是字符串),但是您要做出假设。像JSON这样的格式就是要删除这些假设。
正如巴马尔精明地指出的那样,如果能够解决(或要求创造者修复)产生这种输出的东西会更好。
答案 1 :(得分:0)
虽然这非常hacky,但如果你这样做会怎么样?
$str = 'x: 322.5, y: 174, colors: #000000, removable: true, draggable: true, rotatable: true, resizable: true, scale: 1, degree: 0, price: 0, boundingBox: false, textSize: 22, source: , originX: 322.5, originY: 174, currentColor: #000000, text: დედა, font: Arial';
$arr = explode(',',$str);
$tempArr = array();
foreach($arr as $value){
$temp = explode(':',$value);
foreach($temp as $k=>$v){
$v = trim($v);
if($v === true || $v === "true")
$temp[$k] = true;
elseif($v === false || $v === "false")
$temp[$k] = false;
else
$temp[$k] = '"'.$v.'"';
}
$tempArr[] = implode(':', $temp );
}
echo implode(',', $tempArr);