brainCloud prend en charge l'importation et l'exportation d'entités globales via des fichiers JSON. Ceci est utile pour:
Sauvegarde des données d'entité globale
Migration d'entités d'une application à une autre
Intégration facile avec des outils externes
Quatre formats de fichiers JSON différents sont pris en charge. Chacun présente des avantages et des inconvénients:
Format d'objet JSON brut - fortement recommandé pour les sauvegardes et la migration de données. Moins adapté aux outils externes.
Format d'objet JSON simplifié - très bon pour l'intégration avec des outils externes.
Format de ligne JSON simplifié - utile pour l'intégration avec des outils externes prenant en charge le format de ligne JSON. Limité à un seul type d'entité par fichier.
Format CSV - accessible via diverses applications, pris en charge uniquement pour l'opération "Exportation".
Chacun des formats de fichier est décrit plus en détail ci-dessous.
Format d'objet JSON brut:
Vous trouverez ci-dessous un fichier d'objet JSON brut.
{
"hero": [
{
"entityIndexedId": "superman",
"timeToLive": null,
"createdAt": 1506914746453,
"data": {
"name": "Superman",
"alignment": "Lawful Good",
"cape": true,
"sex": "m",
"secretIdentity": { "firstName": "Clark", "lastName": "Kent" },
"attributes": {
"intelligence": 90,
"strength": 300,
"charisma": 95
},
"powers": [
"flight",
"xray vision",
"heat vision",
"super strength",
"invulnerable"
],
"skills": ["combat"],
"equipment": ["glasses"]
},
"entityType": "hero",
"appId": "22436",
"entityId": "2642b324-0c86-4779-817a-832c30884c81",
"acl": { "other": 1 },
"ownerId": null,
"version": 1,
"expiresAt": 9223372036854775807,
"updatedAt": 1506914746453
},
{
"entityIndexedId": "batman",
"timeToLive": null,
"createdAt": 1506914673444,
"data": {
"name": "Batman",
"alignment": "Neutral Good",
"cape": true,
"sex": "m",
"secretIdentity": { "firstName": "Bruce", "lastName": "Wayne" },
"attributes": {
"intelligence": 99,
"strength": 95,
"charisma": 90
},
"powers": [],
"skills": [
"martial arts",
"combat",
"detective",
"stealth",
"tactics"
],
"equipment": ["grapple gun", "batarangs", "utility belt"]
},
"entityType": "hero",
"appId": "22436",
"entityId": "9e73c19a-f82e-4385-8bce-320c249b2c9b",
"acl": { "other": 1 },
"ownerId": null,
"version": 1,
"expiresAt": 9223372036854775807,
"updatedAt": 1506914673444
},
{
"entityIndexedId": "wonder woman",
"timeToLive": null,
"createdAt": 1506914835429,
"data": {
"name": "Wonder Woman",
"alignment": "Neutral Good",
"cape": false,
"sex": "f",
"secretIdentity": {
"firstName": "Diana",
"lastName": "Prince"
},
"attributes": {
"intelligence": 90,
"strength": 250,
"charisma": 92
},
"powers": ["flight", "super strength", "invulnerability"],
"skills": ["combat"],
"equipment": ["lasso", "sword", "shield"]
},
"entityType": "hero",
"appId": "22436",
"entityId": "dce12974-d76d-4922-b011-ec596ec14d47",
"acl": { "other": 1 },
"ownerId": null,
"version": 1,
"expiresAt": 9223372036854775807,
"updatedAt": 1506914835429
}
]
}
Spécificités du format de fichier :
Les types d'entités sont inclus dans des tableaux JSON - et plusieurs types d'entités sont donc pris en charge.
Les métadonnées de brainCloud sont préservées
entityId
entityIndexedId
timeToLive
expiresAt
createdAt
updatedAt
version
acl
ownerId ← uniquement si l'appId de l'enregistrement correspond à celui actuellement sélectionné
appId
Notez que bien que l'exemple ci-dessus ne montre qu'un seul type d'entité, "héros", la structure du fichier permet à plusieurs types d'entités d'être présents dans un seul fichier.
Format d'objet JSON simplifié:
Le JSON simplifié est très lisible et adapté à l'importation et à l'exportation aller-retour avec des outils tels que Google Sheets.
Il minimise la structure et les frais généraux imposés par brainCloud, bien que cela comporte des limitations (ACL au niveau de l'enregistrement, propriété et entityIds ne sont pas conservés).
Spécificités du format de fichier:
Les types d'entités sont inclus dans des tableaux JSON - plusieurs types d'entités sont donc pris en charge. ← Identique à RAW
Les métadonnées de brainCloud ne sont PAS conservées, à l'exception de
entityIndexedId
(codées comme_eiid
) etentityType
(représentées par le tableau englobant)
L'absence d'une section "données" rend l'objet plus facile à visualiser et à comprendre
{
"hero": [
{
"name": "Superman",
"alignment": "Lawful Good",
"cape": true,
"sex": "m",
"secretIdentity": { "firstName": "Clark", "lastName": "Kent" },
"attributes": {
"intelligence": 90,
"strength": 300,
"charisma": 95
},
"powers": [
"flight",
"xray vision",
"heat vision",
"super strength",
"invulnerable"
],
"skills": ["combat"],
"equipment": ["glasses"],
"_eiid": "superman"
},
{
"name": "Batman",
"alignment": "Neutral Good",
"cape": true,
"sex": "m",
"secretIdentity": { "firstName": "Bruce", "lastName": "Wayne" },
"attributes": {
"intelligence": 99,
"strength": 95,
"charisma": 90
},
"powers": [],
"skills": [
"martial arts",
"combat",
"detective",
"stealth",
"tactics"
],
"equipment": ["grapple gun", "batarangs", "utility belt"],
"_eiid": "batman"
},
{
"name": "Wonder Woman",
"alignment": "Neutral Good",
"cape": false,
"sex": "f",
"secretIdentity": { "firstName": "Diana", "lastName": "Prince" },
"attributes": {
"intelligence": 90,
"strength": 250,
"charisma": 92
},
"powers": ["flight", "super strength", "invulnerability"],
"skills": ["combat"],
"equipment": ["lasso", "sword", "shield"],
"_eiid": "wonder woman"
}
]
}
REMARQUE : _eiid
il ne s'agit pas d'un attribut unique - il s'agit simplement d'un index de recherche. C'est l'une des raisons pour lesquelles nous supprimons toutes les entités d'un type avant l'importation, afin d'éviter que chaque importation ne crée d'autres entités!
Format simplifié des lignes JSON:
Les fichiers JSON Lines ont une structure un peu plus simple que les fichiers objets JSON, dans la mesure où ils ne nécessitent pas la structure de tableau d'objets englobante.
{"name":"Superman","alignment":"Lawful Good","cape":true,"sex":"m","secretIdentity":{"firstName":"Clark","lastName":"Kent"},"_eiid":"superman"}
{"name":"Batman","alignment":"Neutral Good","cape":true,"sex":"m","secretIdentity":{"firstName":"Bruce","lastName":"Wayne"},,"_eiid":"batman"}
{"name":"Wonder Woman","alignment":"Neutral Good","cape":false,"sex":"f","secretIdentity":{"firstName":"Diana","lastName":"Prince"},"_eiid":"wonder woman"}
Chaque ligne du fichier est considérée comme un objet JSON distinct.
Pour cette raison, les fichiers JSON Lines ne peuvent prendre en charge qu'un seul _entityType_ par fichier.
Notez que nous utilisons un exemple plus simple pour une meilleure lisibilité. Notez également que le fichier ci-dessus ne contient que trois lignes (le retour à la ligne semble plus long - notez les numéros de ligne).
Format CSV:
Contrairement au JSON, le CSV requiert moins de compétences techniques et est accessible via un large éventail d'applications. Actuellement, ce format n'est pris en charge que pour l'opération d'exportation.
name,alignment,cape,sex,_eiid,secretIdentity.firstName,secretIdentity.lastName
"Superman","Lawful Good",true,"m","superman","Clark","Kent"
"Batman","Neutral Good",true,"m","batman","Bruce","Wayne"
"Wonder Woman","Neutral Good",false,"f","wonder woman","Diana","Prince"
Spécificités du format de fichier:
Chaque ligne du fichier est considérée comme un enregistrement distinct.
Les métadonnées de brainCloud ne sont PAS conservées, à l'exception de
entityIndexedId
(codées comme_eiid
)