Я анализирую строку json следующим образом:
ring = JSON.parse(response);
Теперь ring
- это объект, но ring.stones - это просто строка, когда он также должен быть объектом.
Если я позвоню:
ring.stones = JSON.parse(ring.stones);
Теперь это правильный объект.
Я не знал, является ли это правильным поведением или, может быть, у меня возникла проблема, мешающая рекурсивному анализу? Если он должен анализироваться рекурсивно, есть ли известные проблемы, которые могли бы его предотвратить?
Обновление
Вот полный ответ перед разбором:
{"ring_id": "9", "stone_count": "4", "style_number": "style 4", "syn10": "436.15", "gen10": "489.39", "syn14": " 627,60" , "gen14": "680,85", "доступен": "да", "тип": "кольцо", "engravings_count": "0", "engravings_char_count": "0", "engravings_band": "10" , "камни": "[{\" stone_id \ ": \" 27 \», \ "ring_id \": \ "9 \", \ "stone_shape \": \ "круглый \", \ "stone_x \": \ "132,80 \", \ "stone_y \": \ "114,50 \", \ "stone_width \": \ "71,60 \", \ "stone_height \": \ "71,60 \", \ "stone_rotation \": \» 0.00 \ "\ "stone_number \": \ "1 \", \ "stone_mm_width \": \ "5.00 \", \ "stone_mm_height \": \ "5.00 \"}, {\ "stone_id \": \" 28 \ "\ "ring_id \": \ "9 \", \ "stone_shape \": \ "круглый \", \ "stone_x \": \ "100,50 \", \ "stone_y \": \" 166.20 \ », \ "stone_width \": \ "36,20 \", \ "stone_height \": \ "36,60 \", \ "stone_rotation \": \ "0,00 \", \ "stone_number \": \ "2 \", \ "stone_mm_width \": \ "2,50 \", \ "stone_mm_height \": \ "2.50 \"}, {\ "stone_id \": \ "29 \", \ "ring_id \": \ "9 \", \ "stone_shape \": \ "круглый \", \ "stone_x \": \ "200,20 \", \ "stone_y \": \ "105,10 \", \ "stone_width \": \ "33.90 \", \» stone_height \ ": \" 33,90 \ "\ "stone_rotation \": \ "0,00 \", \" stone_numbe г \ ": \" 3 \ "\ "stone_mm_width \": \ "2.50 \", \ "stone_mm_height \": \ "2.50 \"}, {\ "stone_id \": \ "30 \", \" ring_id \ ": \" 9 \ "\ "stone_shape \": \ "круглый \", \ "stone_x \": \ "165,80 \", \ "stone_y \": \ "82,50 \", \" stone_width \ ": \" 35,50 \», \ "stone_height \": \ "33,90 \", \ "stone_rotation \": \ "0,00 \", \ "stone_number \": \ "4 \", \ "stone_mm_width \": \ "2.50 \", \ "stone_mm_height \": \ "2.50 \"}] "," images ":" [{\ "title \": \ "white gold \", \ "source \": \ "Style4_4_W_M .png \ "}, {\" title \ ": \" желтое золото \ ", \" source \ ": \" Style4_4_Y_M.png \ "}]"}
Обновление 2
Основываясь на ответе Микероби, я смог выяснить, что происходит:
Вот где я его закодировал:
$row = $sth->fetch(PDO::FETCH_ASSOC);
$row['stones'] = getStones($ring_id);
$row['images'] = getRingVariations($ring_id);
return json_encode($row);
Но функции getStones
и getRingVariations
возвращали json_encode
строки. Мне нужно было изменить их, чтобы они возвращали простые строки.