2011-04-08 111 views
3

如何将Variant转换为(Windows)C++中的Java脚本对象表示法?如何将C++ Variant转换为JSON?

我有一块硬件返回一个可以包含数组(浮点型),字符串或布尔型数据的Variant。所有的变体内容应该很容易转换为JSON,但是有没有一个JSON库可以为变体提供开箱即用的功能?或者...是否有一个JSON库(在C++中)几乎吃东西,并返回适当的JSON。

目前我的JSON转换器(我从一个随机站点下载的源代码)不明白toJson(&变体)。

我所寻找的是(伪):

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

,这里的要点是让用最小的努力测试和工作方案。

编辑通过变异我的意思是Windows的VARIANT:msdn.microsoft.com/en-us/library/ms221627(VS.80).aspx

BR,

尤哈

+0

你问关于Windows'VARIANT'或'boost :: variant <>'? – ildjarn 2011-04-08 18:36:31

+0

Windows'变种:http://msdn.microsoft.com/en-us/library/ms221627(VS.80).aspx – Juha 2011-04-09 16:53:30

回答

1

我认为你需要手动编写这个转换。我不知道任何可以将VARIANT翻译成json或jsoncpp Value类的东西。因此,只需创建一个开关,用于检查VARIANT的VARTYPE vt;元素,并基于该元素将其转换为例如jsoncpp值。可能不需要转换每种类型的VARIANT类型,因此从一些基本类型(VT_I4,VT_UI4,VT_BSTR,VT_BOOL)开始,如果需要,稍后写入缺失类型。

0

你有没有退房JsonCpp?过去我已经有了一些运气。

您可以使用其FastWriter class直接从变体值中输出JSON字符串。

+0

嗯,我安装jsoncpp赢得7,64位,visual studio 2010中有一些麻烦。 ..通过阅读说明和源代码,我感觉我必须先将输入转换为jsoncpp“value” - 对象,然后转换为JSON字符串。我的问题现在更改为“如何将VARIANT转换为jsoncpp-value”。换句话说,实际的转换不会自动完成,对吧?我仍然必须手动说这是一个数组,这是一个布尔值等。 – Juha 2011-04-09 17:06:31