json - 通过对象属性获取列表中的对象

  显示原文与译文双语对照的内容

简而言之,我有这个json结构


{
"inputSettings": [
 {"id": 1,"name":"111" },
 {"id": 2,"name":"222" },
 {"id": 3,"name":"333" } 
. . .
 ] 
}

列表条目是来自特定类的所有对象( 比如 。 由标识和名称表示的结果。 我用RJSONIO读这个 json 。

现在我需要一个函数来给我任何id的"姓名"。 所以最好的用法是:


setting = settings2id(2) #=222

谁能帮助?

时间: 作者:

要获得按id访问名称的最大速度,可以使用 data.table 软件包 比如: ( 它还解决了"因素问题"而不更改全局选项)


library(RJSONIO)
library(data.table)

txt <- 
 '{
"inputSettings": [
 {"id": 1,"name":"111" },
 {"id": 2,"name":"222" },
 {"id": 3,"name":"333" }
 ] 
}'

a <- fromJSON(txt)

# turn the list into a data.table
DT <- rbindlist(a$inputSettings)

# set id as data.table key to get maximum look-up speed
setkeyv(DT,cols='id') 

# get the name corresponding to 2
# N.B. the lookup is performed using binary search for maximum speed
name <- DT[J(2)]$name 

#> [1]"222"

作者:
...