2016-10-27 1 views
1

Je voudrais avoir write_json sortie un tableau de niveau supérieur, quelque chose à l'effet de:Boost ptree top tableau de niveau

[{...},{...},{...},...,{...}] 

Mais quand je passe une liste write_json, il se transforme en JSON plein de vide clés.

{"":{...},"":{...},"":{...},..."":{...}} 

L'utilisation add_child respecte réellement le tableau et me donne la chose la plus proche de:

{"Some Key":[{...},{...},{...},...,{...}]} 

Mais ce n'est pas encore ce que je veux.

Une idée de comment faire ce tableau haut niveau?

Répondre

1

Boost n'a pas de bibliothèque JSON (ni de bibliothèque XML). Il a une bibliothèque d'arbre de propriétés (qui inclut une représentation compatible JSON).

Les limites que vous exécutez en sont parfaitement documentés clairement là: http://www.boost.org/doc/libs/1_62_0/doc/html/property_tree/parsers.html#property_tree.parsers.json_parser

L'ensemble de données d'arbre de la propriété n'est pas tapé, et ne supporte pas les tableaux en tant que tels. Ainsi, le mappage d'arbre JSON/propriété suivant est utilisé:

  • Les objets JSON sont mappés aux noeuds. Chaque propriété est un noeud enfant.
  • Les tableaux JSON sont mappés aux noeuds. Chaque élément est un nœud enfant avec un nom vide. Si un nœud possède des nœuds enfants nommés et non nommés, il ne peut pas être mappé à une représentation JSON.
  • Les valeurs JSON sont mappées aux nœuds contenant la valeur. Cependant, toutes les informations de type sont perdues; les nombres, ainsi que les littéraux "null", "true" et "false" sont simplement mappés à leur forme de chaîne.
  • Les nœuds d'arborescence de propriétés contenant à la fois des nœuds enfants et des données ne peuvent pas être mappés.
  • JSON aller-retour, sauf pour la perte d'informations de type.

Il continue de montrer un exemple de ce que vous rencontrez.