Как правильно прочитать этот файл JSON с помощью Xidel?

Извините за мой английский, я не носитель языка

У меня есть файл json "VideoJson.json", который содержит следующее

VideoJSONLoaded({"video_type": "0","image_id": "0","profile": false,"published_urls": [{"embed_url": "https://alura.hls/vod/p/manifest/55.mpd","protocol": "https","cdn_name": "Cloud","state": 10,"live_url": "https://alura.hls/vod/p/manifest/55.mpd"}],"access_rules": "{}","timed_cues": [],"embedded_cc": 1,"adst_temp_ver": "2"})

Я пытаюсь прочитать json с помощью Xidel с помощью следующей команды

xidel-0.9.8.x32 "VideoJson.json" -e "$json"

И я получаю сообщение об ошибке

Error: jerr:JNDY0021: error at VideoJSONLoaded (tkIdentifier) in VideoJSONLoaded...

Я думаю, это потому, что json внутри VideoJSONLoaded(JSON)

Какую команду я должен использовать, чтобы иметь возможность правильно читать json и извлекать данные?

3 метода стилизации элементов HTML
3 метода стилизации элементов HTML
Когда дело доходит до применения какого-либо стиля к нашему HTML, существует три подхода: встроенный, внутренний и внешний. Предпочтительным обычно...
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
2
0
42
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Какой бы инструмент ни предоставил вам этот файл, он сделал плохую работу, потому что это вообще не JSON.

Когда вы открываете файл *.json, xidel предполагает JSON (--input-format=json). Если это не так, вам нужно переопределить его с помощью --input-format=text (--input-format=html для версии 0.9.8):

xidel -s --input-format=text "VideoJson.json" -e "$raw"
VideoJSONLoaded({"video_type": "0",[...],"adst_temp_ver": "2"})

Чтобы извлечь JSON, вы можете использовать substring-before() и substring-after():

xidel -s --input-format=text "VideoJson.json" -e "substring-before(substring-after($raw,'VideoJSONLoaded('),')')"
{"video_type": "0",[...],"adst_temp_ver": "2"}

Или extract():

xidel -s --input-format=text "VideoJson.json" -e "extract($raw,'\{.+\}')"
{"video_type": "0",[...],"adst_temp_ver": "2"}

И, наконец, parse-json() (json() для версии 0.9.8) для разбора JSON:

xidel -s --input-format=text "VideoJson.json" -e "parse-json(extract($raw,'\{.+\}'))"
{
  "video_type": "0",
  "image_id": "0",
  "profile": false,
  "published_urls": [
    {
      "embed_url": "https://alura.hls/vod/p/manifest/55.mpd",
      "protocol": "https",
      "cdn_name": "Cloud",
      "state": 10,
      "live_url": "https://alura.hls/vod/p/manifest/55.mpd"
    }
  ],
  "access_rules": "{}",
  "timed_cues": [],
  "embedded_cc": 1,
  "adst_temp_ver": "2"
}

Другие вопросы по теме