Open
Description
There is a discrepancy in how single-element arrays are written and read back into the datapackage.json file. Specifically, single-element arrays are being converted into strings when the package is read and then rewritten.
Example:
- Create a DP:
library(frictionless)
temp <- here::here("frictionless")
resource <- data.frame(1:10, 11:20)
dp_v1 <-
frictionless::create_package() %>%
add_resource(resource_name = "numbers", data = resource) %>%
frictionless::create_package()
dp_v1$project <- list(
single_element = list(c("media")),
double_element = list(c("media", "event"))
)
frictionless::write_package(dp_v1, file.path(temp, "1"))
- The resulting datapackage.json is as follows (as expected):
{
"resources": [
{
"name": "numbers",
"path": "numbers.csv",
"profile": "tabular-data-resource",
"format": "csv",
"mediatype": "text/csv",
"encoding": "utf-8",
"schema": {
"fields": [
{
"name": "X1.10",
"type": "integer"
},
{
"name": "X11.20",
"type": "integer"
}
]
}
}
],
"project": {
"single_element": [
"media"
],
"double_element": [
["media", "event"]
]
}
}
Read datapackage.json and write it back:
dp_v2 <- frictionless::read_package(file.path(temp, "1", "datapackage.json"))
frictionless::write_package(dp_v2, file.path(temp, "2"))
The resulting datapackage.json after being rewritten is not as expected:
{
"resources": [
{
"name": "numbers",
"path": "numbers.csv",
"profile": "tabular-data-resource",
"format": "csv",
"mediatype": "text/csv",
"encoding": "utf-8",
"schema": {
"fields": [
{
"name": "X1.10",
"type": "integer"
},
{
"name": "X11.20",
"type": "integer"
}
]
}
}
],
"project": {
"single_element": "media",
"double_element": [
["media", "event"]
]
}
}
Metadata
Metadata
Assignees
Labels
No labels