Я разбираю строку json следующим образом:
ring = JSON.parse(response);
Теперь кольцо
является объектом, а 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 "," available ":" yes "," type ":" ring "," engravings_count ":" 0 ", "engravings_char_count": "0", "engravings_band": "10", "камни": "[{\" stone_id \ ": \" 27 \ ", Stone_height \ ": \" 33.90 \ ", \" Stone_rotation \ ": \" 0.00 \ ", \" Stone_number \ ": \" 4 \ ", \" Stone_mm_width \ ": \" 2.50 \ ", \" Stone_mm_height \ ": \" 2.50 \ "}]", "images": "[{\" title \ ": \" белое золото \ ", \" source \ ": \" Style4_4_W_M.png \ "}, {\" title \ ": \" желтое золото \ ", \" источник \ ": \" Style4_4_Y_M.png \ "}]"}
Основываясь на ответе микероби, я смог понять, что происходит:
Вот где я его закодировал:
$row = $sth->fetch(PDO::FETCH_ASSOC);
$row['stones'] = getStones($ring_id);
$row['images'] = getRingVariations($ring_id);
return json_encode($row);
Но функции getStones
и getRingVariations
возвращали json_encode
'd строки. Мне нужно было изменить их, чтобы они возвращали простые строки.