Задать вопрос
@JoyRax

Как распарсить такой JSON?

Мне поступает такой json (примерно на 500к+ символов), но я никак не могу с ним работать, я пытался пропускать его через функции нормализации, но ни в какую.

Пример:
{"21":"[{\"id\":1,\"comment\":\"1 \\u0441\\u0435\\u0437\\u043e\\u043d\",\"folder\":[{\"id\":\"1_1\",\"comment\":\"1 \\u0441\\u0435\\u0440\\u0438\\u044f<br><i>\\u041b\\u044e\\u0431\\u0438\\u0442\\u0435\\u043b\\u044c\\u0441\\u043a\\u0438\\u0439<\\\/i>\",\"file\":\"[360p]\\\/\\\/cloud.cdnland.in\\\/animetvseries\\\/d23466c41a3b5f6dcce4b8240b9a697b4ccea673\\\/54442374ac96158dff7db008ee662a77:2022030123\\\/240.mp4:hls:manifestaeba8bb416de90a11c13e5707b1f0c0a or \\\/\\\/cloud.cdnland.in\\\/animetvseries\\\/d23466c41a3b5f6dcce4b8240b9a697b4ccea673\\\/54442374ac96158dff7db008ee662a77:2022030123\\\/240.mp4:hls:manifestaeba8bb416de90a11c13e5707b1f0c0a,[480p]\\\/\\\/cloud.cdnland.in\\\/animetvseries\\\/d23466c41a3b5f6dcce4b8240b9a697b4ccea673\\\/54442374ac96158dff7db008ee662a77:2022030123\\\/360.mp4:hls:manifestaeba8bb416de90a11c13e5707b1f0c0a or \\\/\\\/cloud.cdnland.in\\\/animetvseries\\\/d23466c41a3b5f6dcce4b8240b9a697b4ccea673\\\/54442374ac96158dff7db008ee662a77:2022030123\\\/360.mp4:hls:manifestaeba8bb416de90a11c13e5707b1f0c0a or \\\/\\\/cloud.cdnland.in\\\/animetvseries\\\/d23466c41a3b5f6dcce4b8240b9a697b4ccea673\\\/54442374ac96158dff7db008ee662a77:2022030123\\\/240.mp4:hls:manifestaeba8bb416de90a11c13e5707b1f0c0a,[720p]\\\/\\\/cloud.cdnland.in\\\/animetvseries\\\/d23466c41a3b5f6dcce4b8240b9a697b4ccea673\\\/54442374ac96158dff7db008ee662a77:2022030123\\\/480.mp4:hls:manifestaeba8bb416de90a11c13e5707b1f0c0a or \\\/\\\/cloud.cdnland.in\\\/animetvseries\\\/d23466c41a3b5f6dcce4b8240b9a697b4ccea673\\\/54442374ac96158dff7db008ee662a77:2022030123\\\/480.mp4:hls:manifestaeba8bb416de90a11c13e5707b1f0c0a or \\\/\\\/cloud.cdnland.in\\\/animetvseries\\\/d23466c41a3b5f6dcce4b8240b9a697b4ccea673\\\/54442374ac96158dff7db008ee662a77:2022030123\\\/360.mp4:hls:manifestaeba8bb416de90a11c13e5707b1f0c0a or \\\/\\\/cloud.cdnland.in\\\/animetvseries\\\/d23466c41a3b5f6dcce4b8240b9a697b4ccea673\\\/54442374ac96158dff7db008ee662a77:2022030123\\\/240.mp4:hls:manifestaeba8bb416de90a11c13e5707b1f0c0a,[1080p]\\\/\\\/cloud.cdnland.in\\\/animetvseries\\\/d23466c41a3b5f6dcce4b8240b9a697b4ccea673\\\/54442374ac96158dff7db008ee662a77:2022030123\\\/480.mp4:hls:manifestaeba8bb416de90a11c13e5707b1f0c0a or \\\/\\\/cloud.cdnland.in\\\/animetvseries\\\/d23466c41a3b5f6dcce4b8240b9a697b4ccea673\\\/54442374ac96158dff7db008ee662a77:2022030123\\\/480.mp4:hls:manifestaeba8bb416de90a11c13e5707b1f0c0a or \\\/\\\/cloud.cdnland.in\\\/animetvseries\\\/d23466c41a3b5f6dcce4b8240b9a697b4ccea673\\\/54442374ac96158dff7db008ee662a77:2022030123\\\/360.mp4:hls:manifestaeba8bb416de90a11c13e5707b1f0c0a or \\\/\\\/cloud.cdnland.in\\\/animetvseries\\\/d23466c41a3b5f6dcce4b8240b9a697b4ccea673\\\/54442374ac96158dff7db008ee662a77:2022030123\\\/240.mp4:hls:manifestaeba8bb416de90a11c13e5707b1f0c0a\"},{\"id\":\"1_2\",\"comment\":\"2 \\u0441\\u0435\\u0440\\u0438\\u044f<br><i>\\u041b\\u044e\\u0431\\u0438\\u0442\\u0435\\u043b\\u044c\\u0441\\u043a\\u0438\\u0439<\\\/i>\",\"file\":\"[360p]\\\/\\\/cloud.cdnland.in\\\/animetvseries\\\/e513b9e10889fb033880281f232facd2d6bf0a6c\\\/47939abd18f6eb6c478f9f25554827fc:2022030123\\\/240.mp4:hls:manifestaeba8bb416de90a11c13e5707b1f0c0a or \\\/\\\/cloud.cdnland.in\\\/animetvseries\\\/e513b9e10889fb033880281f232facd2d6bf0a6c\\\/47939abd18f6eb6c478f9f25554827fc:2022030123\\\/240.mp4:hls:manifestaeba8bb416de90a11c13e5707b1f0c0a,[480p]\\\/\\\/cloud.cdnland.in\\\/animetvseries\\\/e513b9e10889fb033880281f232facd2d6bf0a6c\\\/47939abd18f6eb6c478f9f25554827fc:2022030123\\\/360.mp4:hls:manifestaeba8bb416de90a11c13e5707b1f0c0a or \\\/\\\/cloud.cdnland.in\\\/animetvseries\\\/e513b9e10889fb033880281f232facd2d6bf0a6c\\\/47939abd18f6eb6c478f9f25554827fc:2022030123\\\/360.mp4:hls:manifestaeba8bb416de90a11c13e5707b1f0c0a or \\\/\\\/cloud.cdnland.in\\\/animetvseries\\\/e513b9e10889fb033880281f232facd2d6bf0a6c\\\/47939abd18f6eb6c478f9f25554827fc:2022030123\\\/240.mp4:hls:manifestaeba8bb416de90a11c13e5707b1f0c0a,[720p]\\\/\\\/cloud.cdnland.in\\\/animetvseries\\\/e513b9e10889fb033880281f232facd2d6bf0a6c\\\/47939abd18f6eb6c478f9f25554827fc:2022030123\\\/480.mp4:hls:manifestaeba8bb416de90a11c13e5707b1f0c0a or \\\/\\\/cloud.cdnland.in\\\/animetvseries\\\/e513b9e10889fb033880281f232facd2d6bf0a6c\\\/47939abd18f6eb6c478f9f25554827fc:2022030123\\\/480.mp4:hls:manifestaeba8bb416de90a11c13e5707b1f0c0a or \\\/\\\/cloud.cdnland.in\\\/animetvseries\\\/e513b9e10889fb033880281f232facd2d6bf0a6c\\\/47939abd18f6eb6c478f9f25554827fc:2022030123\\\/360.mp4:hls:manifestaeba8bb416de90a11c13e5707b1f0c0a or \\\/\\\/cloud.cdnland.in\\\/animetvseries\\\/e513b9e10889fb033880281f232facd2d6bf0a6c\\\/47939abd18f6eb6c478f9f25554827fc:2022030123\\\/240.mp4:hls:manifestaeba8bb416de90a11c13e5707b1f0c0a,[1080p]\\\/\\\/cloud.cdnland.in\\\/animetvseries\\\/e513b9e10889fb033880281f232facd2d6bf0a6c\\\/47939abd18f6e
  • Вопрос задан
  • 378 просмотров
Подписаться 1 Средний 4 комментария
Решения вопроса 1
Immortal_pony
@Immortal_pony Куратор тега JavaScript
но я никак не могу с ним работать, я пытался пропускать его через функции нормализации, но ни в какую

А не надо бездумно совать свою строку какому-то левому коду и ожидать что он всё за тебя сделает.
Надо проанализировать что ты получаешь и только потом начинать что-то делать.
В данном случае видно две очевидные проблемы:
1. В строке отсутствуют все закрывающие символы, которые должны быть в конце строки - кавычки, фигурные скобки, квадратные скобки - всё потеряли. В первую очередь надо найти того кто это написал, ткнуть его носом и громко и чётко произнести: "кто накодил? Кто накодил, а?", после чего посадить его исправлять серверную часть.
2. Внутренний объект зачем-то закодирован в json второй раз. Тут уже можно не кричать, а дать лёгкого добродушного пинка backend-разработчику, но таким образом чтоб после этого его тело двинулось в сторону клавиатуры, используя которую, он исправит и этот косяк.

const weirdString  = fetch() // здесь получаешь свою странную и  корявую строку
const jsonEncoded = weirdString + '\\"}]}]"}' // для примера я вручную посчитал всё закрывающее барахло, но, возможно что для этого надо будет написать отдельную функцию. Ну, тут сам справишься, я думаю
const decodedOnce = JSON.parse(jsonEncoded) // раскодируем первый раз
const decodedTwice = JSON.parse(decodedOnce['21']); // раскодируем второй раз внутренний объект.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы