如何将C++ Variant转换为JSON?

3

如何在(Windows)C++中将Variant转换为JavaScript对象表示法?

我有一块硬件,返回一个Variant,其中可以包含数组(float)、字符串或布尔数据。所有Variant内容都应该很容易地转换为JSON,但是否有一个JSON库可以直接处理Variant呢?或者...是否有一个JSON库(在C++中)可以处理几乎任何东西并返回正确的JSON。

目前我的JSON转换器(从随机网站下载的源代码)无法理解toJson(&variant)。

我正在寻找的是(伪代码):

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
敬礼,
Juha

你在询问关于 Windows 的 VARIANT 还是 boost::variant<> - ildjarn
Windows的变体:http://msdn.microsoft.com/zh-cn/library/ms221627(VS.80).aspx - Juha
2个回答

1

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


0
你有没有看过JsonCpp?我以前用它做过一些成功的尝试。
你可以使用它的FastWriter类直接从变量值输出JSON字符串。

嗯,我在将jsoncpp安装到win 7、64位、visual studio 2010上遇到了一些问题...仅通过阅读说明和源代码,我感觉我必须先将输入转换为jsoncpp“value”对象,然后再转换为JSON字符串。现在我的问题变成了“如何将VARIANT转换为jsoncpp-value”。换句话说,实际的转换不是自动完成的,对吧?我仍然需要手动指定这是一个数组,这是一个布尔值等等。 - Juha

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接