Я хочу создать функцию, которая извлекает jsons из строк обобщенным образом c (для форматов переменных строк) с R на Windows.
Благодаря # SO я использую:
allJSONS <- gregexpr(
pattern = "\\{(?:[^{}]|(?R))*?\\}",
perl = TRUE,
text = jsonString
) %>%
regmatches(x = jsonString)
Это хорошо работает для некоторых строк. Для других функция завершается с предупреждением.
Ошибка:
Для некоторых строк я получаю предупреждение / ошибку:
Предупреждение : В gregexpr (pattern = "\ {(?: [^ {}] | (? R)) *? \}", perl = TRUE, text = jsonString): предел рекурсии, достигнутый в PCRE для элемента 1, может быть увеличен C размер стека для процесса R
Здесь ответили на вопрос Linux: Ошибка: C использование стека слишком близко к пределу . В комментариях было рекомендовано задать новый вопрос с тегом Windows.
Воспроизводимый пример:
Я загрузил пример данных на Github: https://github.com/TyGu1/findJSON/raw/master/jsonString.RData. (Прямая загрузка через load(url(…)))
мне как-то не удалась, но загрузка вручную и использование load()
работают для меня.
(Обратите внимание, что это только примерные данные. Я ищу универсальное c решение.)
load(DOWNLOADED FILE)
allJSONS <- gregexpr(
pattern = "\\{(?:[^{}]|(?R))*?\\}",
perl = TRUE,
text = jsonString
) %>%
regmatches(x = jsonString)
Доказательство того, что на самом деле существует JSON:
library(magrittr)
library(jsonlite)
rp <- gsub(pattern = "memmCellmemm(", fixed = TRUE, replacement = "", x = jsonString)
rp <- substring(rp, first = 1, last = nchar(rp)-1)
json <- rp %>% fromJSON
Цель:
Создать функцию, которая извлекает jsons из строк обобщенным образом c (для форматов переменных строк) с R на Windows.
Я знаю, что могу извлечь json с предоставленным кодом:
rp <- gsub(pattern = "memmCellmemm(", fixed = TRUE, replacement = "", x = jsonString)
rp <- substring(rp, first = 1, last = nchar(rp)-1)
но мне нужна более универсальная c функция, такая как регулярное выражение в верхней части, потому что форматы файлов могут сильно различаться по входным данным.