我正在寻找一种方法(最好是一个现有的函数),可以在一个字符串中找到合法的JSON数据
如here所示,jsonlite::fromJSON()
可以解析JSON,如下所示:
library(jsonlite)
json_glob_1 <- "{ \"age\": 22}"
json_glob_2 <- "{ \"name\":\"John\" }"
fromJSON(json_glob_1)
# $age
# [1] 22
fromJSON(json_glob_2)
# $name
# [1] "John"
是否有一个函数可以接受不纯的字符串并从该字符串中返回JSON glob;例如
messy_string_with_json <- paste0("lsdfjksdlfjk dkfjsldfkjs fkjsdf",
json_glob_1,
"slkdfjlskdfj sfkdjflskdjf sdfk",
json_glob_2,
"32345jlskdfj")
find_JSON(messy_string_with_json)
[[1]]
[1] "{ \"age\": 22}"
[2] "{ \"name\":\"John\" }"
答案 0 :(得分:0)
我不确定是否有一个现成的,但是您可以写一个。
这里我在find all values between braces上使用正则表达式
然后在结果上调用jsonlite::validate
,以查看其是否有效。
library(jsonlite)
json_glob_1 <- "{ \"age\": 22}"
json_glob_2 <- "{ \"name\":\"John\" }"
x <- paste0(
"lsdfjksdlfjk dkfjsldfkjs fkjsdf"
, json_glob_1
, "slkdfjlskdfj sfkdjflskdjf sdfk"
, json_glob_2
, "32345jlskdfj"
)
## try and find values between braces
possible <- regmatches(x, gregexpr("(?=\\{).*?(?<=\\})", x, perl=T))[[1]]
## then try and valide them as JSON
sapply( possible, jsonlite::validate )
# { "age": 22} { "name":"John" }
# TRUE TRUE