JSON LINT удаление пробелов между словами

0

Я извлекаю данные из базы данных mysqli, используя jquery post и php файл. Одно из полей моей базы данных - средний текст. Я извлекаю данные как json. Когда я помещал json-данные в json lint, я получаю:

Parse error on line 92:
...e said to himself, "Iwanttoknowmoreabout
-----------------------^
Expecting '}', ':', ',', ']'

... и я замечаю, что json lint удалил пробелы между некоторыми словами. Вот мой php-код:

require_once ('constants.php');
$db = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
if (mysqli_connect_errno()) {
    printf("Connect failed: %s", mysqli_connect_error());
    exit;
}
$qNations = "SELECT b.Country, a.CountryCode, a.population, a.GDP, a.Income_level, b.Name, b.Age, b.Occupation, b.Origin, b.Neighborhood, b.FromHome, b.Video, b.PersonImage, b.CountryImage, b.WorldImage, b.Image2, b.Image3, b.Image4, b.Image5, b.Image6, b.Notes FROM countries a, people b where a.CountryID = b.CountryID order by a.Country";
$result = $db->query($qNations);

$numrecords = mysqli_num_rows($result);
$count = 0;
$strResults = '{"people": [';
while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
    $count++;
    $story = $row['Notes'];

    $strResults .= '{
                        "country":"' . $row['Country'] . '",
                        "countryCode":"' . $row['CountryCode'] . '",
                        "population":"' . $row['population'] . '",
                        "GDP":"' . $row['GDP'] . '",
                        "income_level":"' . $row['Income_level'] . '",
                        "name":"' . $row['Name'] . '",
                        "age":"' . $row['Age'] . '",
                        "occupation":"' . $row['Occupation'] . '",
                        "origin":"' . $row['Origin'] . '",
                        "neighborhood":"' . $row['Neighborhood'] . '",
                        "story":"' . $story . '"
                    }';
    if ($count < $numrecords) { //only add a comma if there are more records to go
        $strResults .= ',';
    }
}
$strResults .= ']}';

$db->close();
echo $strResults;

Каким образом можно форматировать и/или возвращать поле средней текстовой базы данных в json?

Теги:

1 ответ

4
Лучший ответ

Вы этого не сделаете. Вы никогда не должны сами строить JSON. Вы создаете структуру данных NATIVE php, а затем используйте json_encode() чтобы перевести ее для вас.

Это означает, что вместо построения строки json вместо этого вы создаете массив PHP:

$data = array();
while($row = $result->fetch_array(MYSQLI_ASSOC)) {
   $data[] = $row;
}
echo json_encode($data);

Помните, что JSON - это просто код Javascript. Вы должны построить синтаксически действующий Javascript, что означает выход из любых внутренних котировок:

var name = 'Miles O'Brien'; /// what you're building - an unterminated string
var name = 'Miles O\'Brien'; // what you SHOULD have built.
  • 0
    или просто в echo json_encode($result->fetch_all(MYSQLI_ASSOC)); строку echo json_encode($result->fetch_all(MYSQLI_ASSOC));
  • 0
    @ Марк Б: Как вы избегаете внутренних кавычек?
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню