В дополнение к строкам и числам действительный JSON может содержать специальные значения, такие как null
и false
.
Мне нужно проанализировать JSON, сгенерированный некоторым API, который также содержит undefined
. Однако undefined
является допустимым значением JavaScript, но не является допустимым значением JSON, и всякий раз, когда я его анализирую, он возвращает лексическая ошибка.
Примеры:
library(jsonlite)
# A string works
"[{\"Sepal.Width\":\"3.5\"}]" %>% fromJSON
# Sepal.Width
# 3.5
# A number works
"[{\"Sepal.Width\":3.5}]" %>% fromJSON
# Sepal.Width
# 3.5
# null works
"[{\"Sepal.Width\": null}]" %>% fromJSON
# Sepal.Width
# NA
# false works
"[{\"Sepal.Width\": false}]" %>% fromJSON
# Sepal.Width
# FALSE
# undefined does not work
"[{\"Sepal.Width\": undefined}]" %>% fromJSON
Error: lexical error: invalid char in json text.
[{"Sepal.Width": undefined}]
(right here) ------^
Вопрос:
Есть ли (надежный) способ проанализировать JSON, содержащий значения undefined
? Если нет, то как лучше всего исправить этот неисправный JSON?
Пытаться:
Я думал о простом gsubbbing undefined
, но это рискованно, так как это слово может легко существовать в строковых значениях JSON.
undefined
не является допустимым значением JSON, вы вряд ли найдете синтаксический анализатор, который будет рассматривать его как единое целое. Как вы получаетеundefined
в своем JSON в первую очередь? - person SymbolixAU   schedule 13.12.2019undefined
появляется в допустимом в остальном JSON. Я попытался клонировать исходный код jsonlite и внести коррективы, чтобыundefined
можно было анализировать, как если бы это было логическое значение илиnull
, но я не продвинулся слишком далеко. Здесь находится источник недопустимого JSON. - person stevec   schedule 13.12.2019undefined
наfalse
. Однако это рискованно, поскольку это может изменить фактические строковые значения (например, если в строковых значениях JSON появляется «неопределенное»). - person stevec   schedule 23.12.2019