Я пытаюсь очистить файл.JSON, однако возвращенный файл возвращает несколько объектов JSON в 1.json файле, что приводит к недопустимому json файлу. Я пытаюсь решить эту проблему, добавив [перед файлом JSON и a] после json файла. Затем с помощью регулярного выражения добавить запятую в нужные места.
Это файл перед регулярным выражением
[{"status":"success"}
{"values":{"cpu":26.5152886753948387,"ram":0.8452846061135513},"origin":"core","type":-1,"uuid":"0000-e8-de-27-176d10"}
{"values":{"cpu":25.5839236550189568,"ram":0.8452846061135513},"origin":"core","type":-1,"uuid":"0000-e8-de-27-176d10"}
]
Я создал следующее regex: }(?!\s,|\s])
. Проблема заключается в том, что она по-прежнему добавляет a, после последнего}, даже если за ней следует].
Что я получаю:
[{"status":"success"},
{"values":{"cpu":26.5152886753948387,"ram":0.8452846061135513},"origin":"core","type":-1,"uuid":"0000-e8-de-27-176d10"},
{"values":{"cpu":25.5839236550189568,"ram":0.8452846061135513},"origin":"core","type":-1,"uuid":"0000-e8-de-27-176d10"},
]
Ожидаемый результат:
[{"status":"success"},
{"values":{"cpu":26.5152886753948387,"ram":0.8452846061135513},"origin":"core","type":-1,"uuid":"0000-e8-de-27-176d10"},
{"values":{"cpu":25.5839236550189568,"ram":0.8452846061135513},"origin":"core","type":-1,"uuid":"0000-e8-de-27-176d10"}
]
Замените \s
в вашем регулярном выражении с помощью \s*
так как \s
будет соответствовать одиночному символу пробела, где \s*
будет соответствовать нулю или больше символов пробела.
}(?!\s*[,\]])
$re = "/}(?!\\s*[,\\]])/m";
$str = "[{\"status\":\"success\"}\n\n{\"values\":{\"cpu\":26.5152886753948387,\"ram\":0.8452846061135513},\"origin\":\"core\",\"type\":-1,\"uuid\":\"0000-e8-de-27-176d10\"}\n\n{\"values\":{\"cpu\":25.5839236550189568,\"ram\":0.8452846061135513},\"origin\":\"core\",\"type\":-1,\"uuid\":\"0000-e8-de-27-176d10\"}\n\n]";
$subst = "},";
$result = preg_replace($re, $subst, $str);