>我有以下字符串需要重新格式化
"itemStockDetailsMap_506540 = {"506540_Navy":{"24DUMMY":{"count":0.0,"type":2},"18DUMMY":{"count":0.0,"type":2},"16DUMMY":{"count":0.0,"type":2},"8DUMMY":{"count":0.0,"type":2},"20DUMMY":{"count":0.0,"type":2},"10DUMMY":{"count":0.0,"type":2},"12DUMMY":{"count":0.0,"type":2},"22DUMMY":{"count":0.0,"type":2},"14DUMMY":{"count":0.0,"type":2}},
"506540_Mocha":{"20DUMMY":{"count":0.0,"type":2},"22DUMMY":{"count":0.0,"type":2},"10DUMMY":{"count":0.0,"type":2},"8DUMMY":{"count":0.0,"type":2},"12DUMMY":{"count":0.0,"type":2},"14DUMMY":{"count":0.0,"type":2},"16DUMMY":{"count":0.0,"type":2},"24DUMMY":{"count":0.0,"type":2},"18DUMMY":{"count":0.0,"type":2}}
,"506540_Grey":{"18DUMMY":{"count":0.0,"type":2},"12DUMMY":{"count":0.0,"type":2},"10DUMMY":{"count":0.0,"type":2},"20DUMMY":{"count":0.0,"type":2},"14DUMMY":{"count":0.0,"type":2},"22DUMMY":{"count":0.0,"type":2},"24DUMMY":{"count":0.0,"type":2},"16DUMMY":{"count":0.0,"type":2},"8DUMMY":{"count":0.0,"type":2}}}"
我想在
colour size count
Navy 18 0.0
Navy 8 0.0
......
Grey 10 0.0
........
请指导我,如果有任何很酷的技巧可以重新格式化..非常感谢,
假设您的字符串在变量 a
中:
require(rjson)
a <- sub(".*?(\{.*\})", "\1", a)
a <- fromJSON(a)
a <- do.call(rbind, a)
cbind.data.frame(
colour = rep(sub("\d+_(\w+)", "\1", rownames(a)), each=dim(a)[2]),
size = as.numeric(rep(sub("(\d+)\w+", "\1", colnames(a)), dim(a)[1])),
count = as.numeric(unname(unlist(sapply(a, "[", "count")))))
# colour size count
# 1 Navy 24 2
# 2 Navy 18 1
# 3 Navy 16 0
# 4 Navy 8 0
尝试以下操作:
install.packages("rjson")
# 'yourData' is the JSON string in the OP
do.call(rbind, lapply(rjson::fromJSON(yourData), function(xx) do.call(rbind, xx)))
count type
24DUMMY 0 2
18DUMMY 0 2
16DUMMY 0 2
8DUMMY 0 2
20DUMMY 0 2
10DUMMY 0 2
12DUMMY 0 2
22DUMMY 0 2
14DUMMY 0 2
20DUMMY 0 2
22DUMMY 0 2
10DUMMY 0 2
8DUMMY 0 2
12DUMMY 0 2
14DUMMY 0 2
16DUMMY 0 2
24DUMMY 0 2
18DUMMY 0 2
18DUMMY 0 2
12DUMMY 0 2
10DUMMY 0 2
20DUMMY 0 2
14DUMMY 0 2
22DUMMY 0 2
24DUMMY 0 2
16DUMMY 0 2
8DUMMY 0 2