Прежде всего, ваш json недействителен. Вы можете проверить достоверность, например, здесь .
Как сказано, чтобы получить что-то похожее на ваш желаемый вывод json, вы можете сделать это как f
library(RJSONIO)
# recreating your matrix
m <- matrix(c(1,22,23,34,4,87,23,7,92),nrow=3,byrow=T)
colnames(m)<-c('X1','X2','X3')
# convert numeric matrix to character (if necessary)
m <- matrix(as.character(m),nrow=nrow(m))
# transform your matrix before turning into json
p <- apply(m,MARGIN=1,FUN=function(r)list(Item=unname(r[1]),Recos=unname(r[-1])))
# jsonize
toJSON(p)
Результат:
[
{
"Item" : "1",
"Recos" : ["22", "23"]
},
{
"Item" : "34",
"Recos" : ["4", "87"]
},
{
"Item" : "23",
"Recos" : ["7", "92"]
}
]
EDIT (согласно вашему редактированию):
library(RJSONIO)
# recreating your matrix
m <- matrix(c(1,22,23,34,4,87,23,7,92),nrow=3,byrow=T)
colnames(m)<-c('X1','X2','X3')
# transform your matrix before turning into json
p <- apply(m,MARGIN=1,
FUN=function(r){
list(itemID=unname(r[1]),
recommendedItems=lapply(unname(r[-1]),
FUN=function(i)list(itemID=i)))
})
# jsonize
toJSON(p)
Результат:
[{
"itemID" : 1,
"recommendedItems" : [{
"itemID" : 22
}, {
"itemID" : 23
}
]
}, {
"itemID" : 34,
"recommendedItems" : [{
"itemID" : 4
}, {
"itemID" : 87
}
]
}, {
"itemID" : 23,
"recommendedItems" : [{
"itemID" : 7
}, {
"itemID" : 92
}
]
}
]
EDIT 2:
Вместо того, чтобы писать код для вас, я бы попытался объяснить, как структура R превращается в json пакетом RJSONIO.
Что касается json conversion я рассматриваю 3 «вид» объектов:
1) Неименованный список (или вектор) элементов (например, v <- list('a','b','c')
) переводится в json как:
[ element_1, element_2, element_3, ... ]
с element_n
является n-м элементом списка. Конечно, каждый элемент списка может быть, в свою очередь, другим сложным объектом, который превращается в json, следуя 3 правилам, которые я описываю здесь.
2) Именованный список (или вектор) (например, n <- list(A="foo",B="bar")
), переводится в json как:
{ "name_1": value_1, "name_2": value_2, ... }
с name_n
, являющимся именем n-го элемента именованного списка, и value_1
значением n-го элемента именованный список. Конечно, каждое значение именованного списка может быть, в свою очередь, еще одним сложным объектом, который превращается в json, следуя 3 правилам, которые я описываю здесь.
3) Как вы могли бы правильно указать, каждый объект в R - вектор. Даже a <- 1
является числовым вектором одного элемента. Итак, следуя двум предыдущим правилам, вы ожидаете, например, что list(x=1)
будет переведен как { "x" : [ 1 ] }
. Но благодаря параметру asIs
(по умолчанию FALSE) функции toJSON
, векторы (не списки) отдельных элементов считаются скалярами.
Приведем несколько примеров:
toJSON(list(list(A=2),1:3))
> '[ { "A": 2 }, [ 1, 2, 3 ] ]'
toJSON(list(A=list(1),B=list(C="X"),D=1))
> '{ "A": [ 1 ], "B": { "C": "X" }, "D": 1 }'
после обновления (google_maps_flutter ^ 0.5.7)
GoogleMap(
onMapCreated: _onMapCreated,
initialCameraPosition:
CameraPosition(target: LatLng(28.556160, 77.100281)), // INDIA
onCameraMove: ((pinPosition) {}), // <-----pinPosition gives LatLong
),