2017-08-29 4 views
0

I ont des données au format JSON comme celui-ci:Façon de représenter proprement tableau d'objets avec 2 valeurs dans JSON?

"members": [ 
      "[email protected]", 
      "[email protected]", 
      "[email protected]##internalservicedomain.test.com##" 
     ] 

Je veux ajouter rôle si:

admin is administrator 
user is member 
guest is guest 

Quelle est la meilleure façon de le stocker?

Je peux le faire comme ceci:

"members": [ 
       {name: "[email protected]", role: "administrator"}, 
       {name: "[email protected]", role: "member"}, 
       {name: "[email protected]##internalservicedomain.test.com##", role: "guest"} 
      ] 

Ou comme ça:

"members": [ 
       "administrators": ["[email protected]"], 
       "users": ["[email protected]"], 
       "guests: ["[email protected]##internalservicedomain.test.com##"] 
      ] 

Mais je n'aime pas ces solutions, est-il un moyen de représenter plus propre il? Je préférerais la première option, parce que je peux alors parcourir plus facilement les éléments, mais les frais généraux sont terribles et la deuxième option semble meilleure, mais elle semble compliquée à itérer.

+0

Quelle langue utilisez-vous pour lire/écrire les données? Dans certaines langues , le stockage de la 2ème option le rend vraiment facile. c'est-à-dire pour chaque membre dans les membres ... la syntaxe de type est assez propre. En JavaScript ce serait un peu différent, mais je vote toujours pour l'option numéro 2 – luxdvie

+0

Nous utilisons Delphi Delphi et une bibliothèque pour cela. Je pense que j'ai besoin d'écrire 2 foreachs pour itérer le tableau sous-jacent. –

Répondre

0

Cette option plus est correcte à mon avis

"members": [ 
       {name: "[email protected]", role: "administrator"}, 
       {name: "[email protected]", role: "member"}, 
       {name: "[email protected]##internalservicedomain.test.com##", role: "guest"} 
      ] 

De cette façon, vous pouvez non seulement itérer mieux, mais si vous ajoutez de nouveaux rôles dans l'avenir, il sera beaucoup plus facile d'accueillir.

vous pouvez mettre fin de compte le rôle « A » pour l'administrateur, « M » pour les membres et ainsi de suite couper quelques kbs ...

+0

Ok, je vais l'utiliser même si je ne l'aime pas. Je ne veux pas utiliser d'acronymes pour les rôles, car le système est énorme et il serait illisible pour les nouveaux programmeurs. Je m'attendais à mieux répondre, mais c'est probablement mon problème que je ne peux pas poser une bonne question sur le problème. –