我有

$dataSavedBlocks = get_user_meta( $user_id, 'jsonBlock');
var_dump($dataSavedBlocks);


这使:

array(1) { [0]=> string(534) "{"date":"3/25/20","ricoverati_con_sintomi":999,"terapia_intensiva":251,"totale_ospedalizzati":1250,"isolamento_domiciliare":1526,"totale_attualmente_positivi":2776,"nuovi_attualmente_positivi":257,"dimessi_guariti":54,"deceduti":142,"totale_casi":2972,"tamponi":17868} | ,{"date":"3/25/20","ricoverati_con_sintomi":82,"terapia_intensiva":19,"totale_ospedalizzati":101,"isolamento_domiciliare":311,"totale_attualmente_positivi":412,"nuovi_attualmente_positivi":17,"dimessi_guariti":12,"deceduti":18,"totale_casi":442,"tamponi":3019} | " }


我试过了:

$dataSavedBlocks = get_user_meta( $user_id, 'jsonBlock');
$dataCustom = implode("| ,", $dataSavedBlocks[0]);
$dataCustom = str_replace("| ,",",",$dataCustom);
$dataCustom = explode(",", $dataCustom);

var_dump($dataCustom);


我得到:

Warning: implode(): Invalid arguments passed in ...
array(1) { [0]=> string(0) "" }


我需要一个正确的json才能在js中解析它:

var customJsonData = JSON.parse('<?php echo $dataCustom; ?>');


但是我有| ,作为分隔符,保存时由于其他原因我不能排除它。我究竟做错了什么?

最佳答案

您需要做的就是用空字符串替换|并将结果包装在方括号中:

$jsonBlock = '{"date":"3/25/20","ricoverati_con_sintomi":999,"terapia_intensiva":251,"totale_ospedalizzati":1250,"isolamento_domiciliare":1526,"totale_attualmente_positivi":2776,"nuovi_attualmente_positivi":257,"dimessi_guariti":54,"deceduti":142,"totale_casi":2972,"tamponi":17868} | ,{"date":"3/25/20","ricoverati_con_sintomi":82,"terapia_intensiva":19,"totale_ospedalizzati":101,"isolamento_domiciliare":311,"totale_attualmente_positivi":412,"nuovi_attualmente_positivi":17,"dimessi_guariti":12,"deceduti":18,"totale_casi":442,"tamponi":3019} | ';

$json = '[' . str_replace(' | ', '', $jsonBlock) . ']';

var_dump($json);


结果将是:

string(530) "[{"date":"3/25/20","ricoverati_con_sintomi":999,"terapia_intensiva":251,"totale_ospedalizzati":1250,"isolamento_domiciliare":1526,"totale_attualmente_positivi":2776,"nuovi_attualmente_positivi":257,"dimessi_guariti":54,"deceduti":142,"totale_casi":2972,"tamponi":17868},{"date":"3/25/20","ricoverati_con_sintomi":82,"terapia_intensiva":19,"totale_ospedalizzati":101,"isolamento_domiciliare":311,"totale_attualmente_positivi":412,"nuovi_attualmente_positivi":17,"dimessi_guariti":12,"deceduti":18,"totale_casi":442,"tamponi":3019}]"




const json = JSON.parse('[{"date":"3/25/20","ricoverati_con_sintomi":999,"terapia_intensiva":251,"totale_ospedalizzati":1250,"isolamento_domiciliare":1526,"totale_attualmente_positivi":2776,"nuovi_attualmente_positivi":257,"dimessi_guariti":54,"deceduti":142,"totale_casi":2972,"tamponi":17868},{"date":"3/25/20","ricoverati_con_sintomi":82,"terapia_intensiva":19,"totale_ospedalizzati":101,"isolamento_domiciliare":311,"totale_attualmente_positivi":412,"nuovi_attualmente_positivi":17,"dimessi_guariti":12,"deceduti":18,"totale_casi":442,"tamponi":3019}]');

console.log(json);

09-10 18:32