Как преобразовать JSON массив в JSON строку

176
07 апреля 2019, 05:00

Есть JSON массив в таком виде.

[{"id":"1","name":"Name 1"},{"id":"2","name":"Name 2"}]

Раньше эти данные были на отдельной страничке и я получал данные таким способом

$.getJSON("searchshop.php", function(json){ 
    for (i = 0; i < json.length; i++) {
       alert(json[i].id);
    }
});

Все работало хорошо, но сделал передачу не в файл а напрямую в обработчик то ничего не работает. пробовал сделать так

respone = '<?php echo $json; ?>';
var obj = jQuery.parseJSON(respone);

Выдает ошибку

VM11773:1 Uncaught SyntaxError: Unexpected token ' in JSON at position 0

Как мне преобразовать $json в объект javascript ? что бы с ним можно было работать как с массивом. Подозреваю что причина в том что что бы сработала parseJSON нужна строка json а не объект, но как преобразовать объект в строку не знаю.

Answer 1

response = '<?php echo $json; ?>'; 
console.log("Type 'response'", typeof response); 
 
try { 
  console.log("Length of response", response.length); 
} catch(err) { 
  console.log("Error", err) 
}

Не могли бы вы запустить данный код и показать логи?

Answer 2

Попробуйте с использованием этого:

JSON.stringify();
Answer 3

Вам необходимо понять что вам приходит в respone, текст или массив. Если там массив, то ничего преобразовывать не надо, а если текст то используйте JSON.parse();

//Приходит массив 
let resp = [{"id":"1","name":"Name 1"},{"id":"2","name":"Name 2"}]; 
 
for (i = 0; i < resp.length; i++) { 
  console.log(resp[i]) 
} 
 
//Приходит текст 
let respText =  '[{"id":"1","name":"Name 1"},{"id":"2","name":"Name 2"}]' 
 
let respJson = JSON.parse(respText); 
for (i = 0; i < respJson.length; i++) { 
  console.log(respJson[i]) 
}

READ ALSO
автоматический скрол на странице

автоматический скрол на странице

Вот мой кодОн работает нормально только на мозила

196
валидация формы с помощью flow js

валидация формы с помощью flow js

При проверке flow check соотвественно выбиваеи ошибку

142
JS success как иконка

JS success как иконка

Подскажите пожалуйста как заместо слова "Обновлено" добавить иконку например <i class='icon fa fa-check'></i> которая плавно исчезнет через пару...

149