2011-04-08 5 views
3

Comment convertir une notation d'objet de script Variant en Java dans (windows) C++?Comment convertir une variante C++ en JSON?

J'ai un élément matériel qui retourne un Variant qui peut contenir un tableau (flottant), une chaîne ou des données booléennes. Tout le contenu de la variante devrait être facilement converti en JSON, mais y a-t-il une bibliothèque JSON qui le fait prête à l'emploi pour la variante? Ou ... Y at-il une bibliothèque JSON (en C++) qui mange presque n'importe quoi et renvoie le bon JSON.

Actuellement, mon convertisseur JSON (sources que j'ai téléchargées à partir d'un site aléatoire) ne comprend pas toJson (variante &).

Ce que je cherche est (pseudo-code):

switch (variant.type): 
    type1: 
     return json.dump(variant.value) 
    default: 
     return json(stringify(variant.value)) 

Le point principal est ici pour obtenir une solution de travail testé et avec un minimum d'effort.

modifier En variante, je veux dire la VARIANT Windows: msdn.microsoft.com/en-us/library/ms221627(VS.80).aspx

br,

Juha

+0

Vous posez des questions sur Windows '' VARIANT' ou 'boost :: variant <>'? – ildjarn

+0

Variante de Windows: http://msdn.microsoft.com/en-us/library/ms221627(VS.80).aspx – Juha

Répondre

1

Je pense que vous devez écrire cette conversion manuellement. Je ne suis pas averti de tout ce qui pourrait traduire VARIANT en json ou jsoncpp Value class. Il suffit donc de créer un commutateur qui vérifie l'élément VARTYPE vt; de VARIANT et de le convertir en valeur par exemple jsoncpp. Vous n'avez probablement pas besoin de convertir tous les types de types VARIANT, donc commencez par ceux de base (VT_I4, VT_UI4, VT_BSTR, VT_BOOL) et plus tard, si nécessaire, écrivez des types manquants.

0

Avez-vous vérifié JsonCpp? J'ai eu de la chance avec ça dans le passé.

Vous pouvez utiliser FastWriter class pour générer une chaîne JSON directement à partir d'une valeur de variante.

+0

hmm, j'ai quelques problèmes pour installer jsoncpp pour gagner 7, 64 bits, visual studio 2010. Juste en lisant les instructions et le code source, j'ai l'impression que je dois d'abord convertir l'entrée en jsoncpp "value" -object puis en JSON string. Mon problème maintenant change en "Comment convertir VARIANT à jsoncpp-value". En d'autres termes, la conversion réelle n'est pas faite automatiquement, non? Je dois encore dire manuellement que c'est un tableau et c'est un booléen, etc. – Juha

Questions connexes