PHP json_encode Проблема с обратным слэшем и именем массива

Я конвертирую некоторые данные postgresql в PHP json_encode, но у меня есть некоторые проблемы:

МОЙ JSON OUTPUT:

{"arns":[{"arn":"CSC-ECN-NAUB109","problem":"description problem<\/p>", "solution":"solution description<\/p>", "0":[{"name":"jquery.png","path":"http:\/\/arn.test.pt\/uploads\/CSC-ECN-NAUB109\/jquery.png"}]}]} 

МОЙ КОД:

 <?php require('includes/connection.php'); $modelos_info = (isset($_GET['models'])) ? $_GET['models'] : "none"; if($modelos_info != "none"){ $sth = $dbh->query("SELECT * FROM arn_info JOIN upload2 ON (arn_info.arn=upload2.id_arn) WHERE modelos LIKE '$modelos_info ;%' OR modelos LIKE '%; $modelos_info ;%' "); $sth->setFetchMode(PDO::FETCH_ASSOC); $response = array(); $posts = array(); while($row = $sth->fetch()) { $arn=$row ['arn']; $problem=$row['problem']; $solution=$row['solution']; $name=$row['name']; $path=$row['path']; $posts_anexos['attach'] = $posts2; $posts2[] = array('name'=> $name , 'path'=> 'http://arn.test.pt/' .$path); $posts[] = array('arn'=> $arn , 'problem'=> $problem , 'solution'=> $solution, $posts2 ); } $response['arns'] = $posts; $fp = fopen('arns.json', 'w'); fwrite($fp, json_encode($response)); fclose($fp); echo json_encode($response); } ?> 

благодаря

Related of "PHP json_encode Проблема с обратным слэшем и именем массива"

В первом случае, если я попытаюсь сделать это:

 $str = "this / string"; var_dump(json_encode($str)); 

Я получил :

 string '"this \/ string"' (length=16) 

С обратной косой чертой тоже.

Глядя на json.org , кажется, что стандарт JSON определяет, что косые черты внутри строк должны быть экранированы.

Итак, json_encode() кажется, делает правильные вещи.

Если вы не хотите, чтобы эти косые черты были экранированы, тогда вы не хотите иметь действительный JSON и не должны работать с json_encode .


Во-вторых, теперь вы не должны использовать это:

 $posts[] = array(..., $posts2 ); 

Вместо этого вы должны использовать:

 $posts[] = array(..., 'attach' => $posts2 ); 

Таким образом, последний элемент массива будет иметь имя «attach».