2011-04-08 110 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