mirror of
https://github.com/meilisearch/MeiliSearch
synced 2024-12-22 12:40:04 +01:00
Flatten serde Json
This crate flatten serde_json
Object
in a format
similar to elastic search.
Examples
There is nothing to do
{
"id": "287947",
"title": "Shazam!",
"release_date": 1553299200,
"genres": [
"Action",
"Comedy",
"Fantasy"
]
}
Flattens to:
{
"id": "287947",
"title": "Shazam!",
"release_date": 1553299200,
"genres": [
"Action",
"Comedy",
"Fantasy"
]
}
Objects
{
"a": {
"b": "c",
"d": "e",
"f": "g"
}
}
Flattens to:
{
"a.b": "c",
"a.d": "e",
"a.f": "g"
}
Array of objects
{
"a": [
{ "b": "c" },
{ "b": "d" },
{ "b": "e" },
]
}
Flattens to:
{
"a.b": ["c", "d", "e"],
}
Array of objects with normal value in the array
{
"a": [
42,
{ "b": "c" },
{ "b": "d" },
{ "b": "e" },
]
}
Flattens to:
{
"a": 42,
"a.b": ["c", "d", "e"],
}
Array of objects of array of objects of ...
{
"a": [
"b",
["c", "d"],
{ "e": ["f", "g"] },
[
{ "h": "i" },
{ "e": ["j", { "z": "y" }] },
],
["l"],
"m",
]
}
Flattens to:
{
"a": ["b", "c", "d", "l", "m"],
"a.e": ["f", "g", "j"],
"a.h": "i",
"a.e.z": "y",
}
Collision between a generated field name and an already existing field
{
"a": {
"b": "c",
},
"a.b": "d",
}
Flattens to:
{
"a.b": ["c", "d"],
}