簡體   English   中英

如何將 C++ 字符串數組轉換為 json?

[英]How to convert C++ string array to json?

我已經開始使用 C++ 實現Microsoft 認知服務 我有一個 C++ 字符串數組(faceIds 數組)

string faceIds[] ={
            "29e874a8-a08f-491f-84e8-eac263d51fe1",
            "6f89f38a-2411-4f6c-91b5-15eb72c17c22",
            "7284b730-6dd7-47a3-aed3-5dadaef75d76",
            "1fc794fa-3fd4-4a78-af11-8f36c4cbf14c",
            "3e57afca-bd1d-402e-9f96-2cae8dbdfbfa",
            "c2a4e0f5-4277-4f5a-ae28-501085b05209",
            "23b5910e-9c32-46dd-95f3-bc0434dff641"
    };

然后,我嘗試將字符串數組(C++)轉換為json字符串。

JSONObject jsnobject = new JSONObject(10);
JSONArray jsonArray = jsnobject.getJSONArray(faceIds);
    for (int i = 0; i < jsonArray.length(); i++) {
        JSONObject explrObject = jsonArray.getJSONObject(i);
}

但是,我遇到了問題。 所以,我的問題是,如何將 C++ 字符串數組轉換為 json?

預先感謝。

您的問題並沒有准確識別您的輸入和預期輸出。 你是從文件中解析 C++ 嗎? 我說不清。

如果第一個代碼塊是自動生成的輸入文件,並且始終具有該空白模式,並且等效的 JSON 是您想要的輸出,請將第一行替換為“[\\n”,最后一行替換為“]/n”完畢。

如果您不能保證輸入文件的空白模式,那么您將需要一個 C++ 解析器來生成一個 AST(抽象符號樹),您可以遍歷它以找到 faceIds 數組 RHS(右側),然后執行與該 AST 集合中顯示的內容相同。

如果您只是想通過 faceIds 在 C++ 中進行迭代,那么以下代碼應生成所需的 JSON 字符串:

#include <iostream>
#include <sstream>

std::string faceIds[] = {
    "29e874a8-a08f-491f-84e8-eac263d51fe1",
    "6f89f38a-2411-4f6c-91b5-15eb72c17c22",
    "7284b730-6dd7-47a3-aed3-5dadaef75d76",
    "1fc794fa-3fd4-4a78-af11-8f36c4cbf14c",
    "3e57afca-bd1d-402e-9f96-2cae8dbdfbfa",
    "c2a4e0f5-4277-4f5a-ae28-501085b05209",
    "23b5910e-9c32-46dd-95f3-bc0434dff641"
};

int main() {

    std::ostringstream ostr;
    ostr << '[' << std::endl;
    int last = std::extent<decltype(faceIds)>::value - 1;
    int i = 0;
    while (i < last)
        ostr << "    \"" << faceIds[i ++] << "\"," << std::endl;
    ostr << "    \"" << faceIds[i] << "\"" << std::endl;
    ostr << ']' << std::endl;

    std::cout << ostr.str();

    return 0;
}

如果您想要某個庫的對象表示,那么您必須確定您使用的是哪個庫,以便我們可以查看其 API。 無論你使用什么庫,你總是可以運行上面 ostr.str() 上的任何解析方法,但是如果你確定了 JSON 庫,我們可以找到一種更有效的方法來構建等效的 JSON 樹。 不能從像 JSONObject 這樣的對象名稱中唯一地標識庫,JSONObject 是數十個庫中使用的類名。

這是一個強大的跨平台解決方案,用於在 C++ https://github.com/nlohmann/json 中使用 JSON。 我確信微軟也有一些庫鎖定到他們自己的操作系統上。 例子很清楚。

我認為nlohmann c++ 庫在您的情況下很有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM