Предполагается, что JSON.parse является рекурсивным?

Я разбираю строку 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 \ "}]"}


Обновление 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 'd строки. Мне нужно было изменить их, чтобы они возвращали простые строки.

6
задан JD Isaacks 3 November 2010 в 19:42
поделиться