я хочу генерировать значения JSON именно так как этот здесь
{
"feed": [
{
"id": 1,
"name": "National Geographic Channel",
"image": "http://api.androidhive.info/feed/img/cosmos.jpg",
"status": "\"Science is a beautiful and emotional human endeavor,\" says Brannon Braga, executive producer and director. \"And Cosmos is all about making science an experience.\"",
"profilePic": "http://api.androidhive.info/feed/img/nat.jpg",
"timeStamp": "1403375851930",
"url": null
},
{
"id": 2,
"name": "TIME",
"image": "http://api.androidhive.info/feed/img/time_best.jpg",
"status": "30 years of Cirque du Soleil's best photos",
"profilePic": "http://api.androidhive.info/feed/img/time.png",
"timeStamp": "1403375851930",
"url": "http://ti.me/1qW8MLB"}
]
}
и каждый раз, когда я пытаюсь сделать такую вещь, я получаю этот вывод
{
"feed": [{
"id": "1",
"name": "National Geographic Channel",
"image": "http:\/\/api.androidhive.info\/feed\/img\/cosmos.jpg",
"status": "Science is a beautiful and emotional human endeavor",
"profilePic": "http:\/\/api.androidhive.info\/feed\/img\/nat.jpg",
"timeStamp": "1403375851930",
"url": "null"}, {
"id": "2",
"name": "National Geographic Channel",
"image": "http:\/\/api.androidhive.info\/feed\/img\/cosmos.jpg",
"status": "Science is a beautiful and emotional human endeavor",
"profilePic": "http:\/\/api.androidhive.info\/feed\/img\/nat.jpg",
"timeStamp": "1403375851930",
"url": "null"}]
}
посмотрите на идентификатор в первом json и URL
я хочу, чтобы мой JSON был точно таким же, как первый
мой php код:
<meta http-equiv="Content-Type" content="application/json; charset=utf-8 ">
<?php
include "../funcs/db.php";
$SelectPosts = mysql_query("SELECT * FROM usf_mobile");
$rows = array();
while($r = mysql_fetch_assoc($SelectPosts)) {
$rows['feed'][] = $r;
}
print json_encode($rows);
?>
я попробовал много решений здесь переполнение стека и я не нашел никого, кто мог бы быть близко к моей проблеме.
Приведите значение идентификатора к целому, используя (int)
и экранировать косые черты URL с помощью JSON_UNESCAPED_SLASHES
;
<meta http-equiv="Content-Type" content="application/json; charset=utf-8 ">
<?php
include "../funcs/db.php";
$SelectPosts = mysql_query("SELECT * FROM usf_mobile");
$rows = array();
while($r = mysql_fetch_assoc($SelectPosts)) {
$r['id'] = (int)$r['id'];
$rows['feed'][] = $r;
}
print json_encode($rows,JSON_UNESCAPED_SLASHES);
?>
Надеюсь это поможет.
Попробуйте следующий пример, если вы используете PHP 5.4+
$rows = json_encode($rows,JSON_NUMERIC_CHECK | JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT);
Для более низких версий вы можете ввести значения в вашем массиве, чтобы получить желаемый результат.
Ты используешь mysql_query()
(что вы не должны делать, потому что это устарело). Проблема в том, что у вас нет возможности привязать столбцы к типам значений (строка, целое число и т. Д.). Все возвращается в виде строки.
Я бы предложил использовать mysqli
или же PDO
где вы можете указать типы столбцов при привязке к ним. Без этого вам нужно будет вручную привести ваши значения перед кодированием в JSON.
Если у вас есть PHP 5.4+, вы можете использовать JSON_UNESCAPED_SLASHES
а также JSON_NUMERIC_CHECK
чтобы получить результаты, которые вы хотите.
json_encode($array, JSON_UNESCAPED_SLASHES | JSON_NUMERIC_CHECK)
Вы можете найти все это на странице руководства для json_encode.