After removing the braces ({}) and double quotes with gsub, read the substring after the : using read.csv into a data.frame and then change the column names with the substring i.e. before the :
v1 <- gsub('"|[{}]', "", c(x, y))
out <- read.csv(text=paste(gsub("\\w+:\\s+", "", v1), collapse=", "),
header=FALSE, stringsAsFactors = FALSE)
colnames(out) <- unlist(regmatches(v1, gregexpr("\\w+(?=:)", v1, perl = TRUE)))
out
# device_codename brand percent_incoming_nighttime percent_outgoing_daytime
#1 nikel Xiaomi 0.88 9.29
NOTE: No external packages used
Or using RJSONIO and tidyverse
library(tidyverse)
library(RJSONIO)
list(x, y) %>%
map(~ fromJSON(.x) %>%
as.list %>%
as_tibble) %>%
bind_cols
# A tibble: 1 x 4
# device_codename brand percent_incoming_nighttime percent_outgoing_daytime
# <chr> <chr> <dbl> <dbl>
#1 nikel Xiaomi 0.88 9.29
data
x <- "{\"device_codename\": \"nikel\", \"brand\": \"Xiaomi\"}"
y <- "{\"percent_incoming_nighttime\": 0.88, \"percent_outgoing_daytime\": 9.29}"