2016-02-02 3 views
0

Я просто научился использовать библиотеку jsonlite для извлечения json-данных с сервера. Однако в полученном json-ответе (структура которого я не контролирую), кажется, есть узел, который я могу описать только как фрагмент данных «escaped» JSON, прямо в середине объекта json. Как мне создать объект JSON? Я могу извлечь каждое такое значение ОК, но тогда я не могу использовать его, поскольку он не превращает его в истинный объект JSON.R: Un-escape JSON string и построить объект JSON

пример:

library(jsonlite) 
myFakeJSON <- '"{"country": "UK","ranking": "45"}"' 
json <- toJSON(myFakeJSON) 

но:

> json 
[1] "\"{\"country\": \"UK\",\"ranking\": \"45\"}\"" 

Результат не объект JSON .. Что я делаю неправильно? Как я могу избежать (или не убежать?) Полученных данных? Кажется, что-то очевидное, но не для меня :(

ответ

0

Я думаю, что вы делаете две ошибки: во-первых: слишком много цитат, во-вторых: неправильный тест для JSON-hood. Если вы хотите использовать toJSON, R объект для преобразования, а не усилий в качестве JSON строки.

> myFakeJSON <- '{"country": "UK", "ranking": "45"}' 
> fromJSON(myFakeJSON) 
$country 
[1] "UK" 

$ranking 
[1] "45" 

Если вам просто нужно удалить лишние двойные кавычки на «вне» фигурные скобки, то эта замена регулярных выражений преуспевает на этом небольшом пример:

> json <- fromJSON(gsub("\\}\\\"", "}", gsub("\\\"\\{","{", myFakeJSON))); json 
$country 
[1] "UK" 

$ranking 
[1] "45" 
+0

Привет, как я уже упоминал в своем вопросе, я не контролирую этот формат. Я согласен с тем, что у него слишком много цитат и т. д. ... но это то, что я получаю. Переменная «myFakeJSON» в примере иллюстрирует странный формат, и было бы неплохо увидеть, как десериализовать его обратно в правильный JSON без изменения примера. – rstruck

+0

Мне нужно немного поработать с регулярным выражением, но по большей части я начинаю получать структурированные объекты из беспорядка. Благодаря! Я собираюсь принять это как ответ. – rstruck

 Смежные вопросы

  • Нет связанных вопросов^_^