.txtファイルからC ++でJSON文字列をプリティファイする

user7420144

私は現在C ++で作業しており、ostreamを使用して.txtファイルに書き込む要求からHTTP応答を取得しています。これは非同期で発生するため、これを変更したくありません。

データの書き込みが終わったら、ファイルから読み取りたい

{"data":{"request":[{"type":"City","query":"London, United Kingdom"}],"weather":[{"date":"2013-04-21","astronomy".....

〜どういうわけか〜nlohmann / jsonなどの外部ライブラリまたはother(?)を使用して文字列をプリティフィケーションし、次に

a)コンソールに出力し、b)別のファイル(pretty.json)に保存します

https://github.com/nlohmann/jsonから使用する方法を理解するのに問題があります

これにアプローチする方法はありますか?

EOFを一種の「バッファー」にヒットするまでファイルを1行ずつ取得し、その上で_jsonを実行して、コンソールに表示できるソリューションを保存することを考えていました...

これまでの私のコード

#include <cpprest/http_client.h>
#include <cpprest/filestream.h>
#include <iostream>
#include <sstream>
#include "json.hpp"



using namespace utility;                // string conversion
using namespace web;                    // URI 
using namespace web::http;              // HTTP commands
using namespace web::http::client;      // HTTP Client features
using namespace concurrency::streams;   // Asynch streams, like Node

using json = nlohmann::json;

int main()
{
auto fileStream = std::make_shared<ostream>();

// Open stream to output file.
pplx::task<void> requestTask = fstream::open_ostream(U("results.txt"))

.then([=](ostream outFile)

{
    *fileStream = outFile;

    http_client client //gets the info
    return client.request(methods::GET, stringBuilder.to_string());
})

    .then([=](http_response response)       // set up response handler
{
    printf("Received response status code:%u\n", response.status_code()); 

    return response.body().read_to_end(fileStream->streambuf());

})      

    .then([=](size_t)       // close file stream
{
    return fileStream->close();
})

    .then([=]()
{
    nlohmann::json j;
    std::ifstream i;
    i.open("results.txt"); // ?? <<< === this is where my question is
});

// Wait for all the outstanding I/O to complete, handle exceptions
try
{
    requestTask.wait();
}
catch (const std::exception &e) 
{
    printf("Error exception:%s\n", e.what());
  }


  return 0;
}

解決:

.then([=]()
    {

    // read a JSON file
    std::ifstream readFromFile("results.txt");
    if (readFromFile.is_open()) {

    nlohmann::json j;
    readFromFile >> j;

    // write prettified JSON to another file
    std::ofstream writeToFile("pretty.json");
    writeToFile << std::setw(4) << j << std::endl;

    readFromFile.close();
    writeToFile.close();
    }
    else {
        std::cout << "unable to open file";
    }

 });
賄賂

nlohmannでかわいがるには2つの選択肢があります。

文字列を生成するダンプを使用します

int indent = 4;
nlohmann::json data;
data.dump(indent);

または、フィールド幅を設定してストリーム出力オーバーロードを使用します

std::ofstream o("pretty.json");
o << std::setw(4) << data << std::endl;

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

txtファイルから文字列、変数を取得し、メインスクリプトで使用する

分類Dev

C#あるtxtファイルから別のtxtファイルにテキストを挿入する

分類Dev

JTable txtファイルから文字列を作成する方法は?

分類Dev

TXTファイルからCSVファイルを作成する

分類Dev

文字列に外部.txtファイルからテキストを比較する方法

分類Dev

C ++-。txtファイルから配列に保存しますか?

分類Dev

Javaで.txtファイルから文字列を分割する簡単な方法

分類Dev

Pythonでtxtファイルから最初のN文字列を保存する方法は?

分類Dev

c# で txt ファイルから 1 文字にアクセスする

分類Dev

生のtxtファイルから文字列を読み取る

分類Dev

txtファイルから文字列を削除します

分類Dev

CMDからファイルデータを取得する方法:dir> filename.txtテキストファイル?C

分類Dev

C#を使用して.txtファイルから特定の番号をフィルタリングする

分類Dev

JavaプロパティファイルをJSON文字列に変換する

分類Dev

並列配列をtxtファイルから分離する

分類Dev

文字列の配列をファイルtxtからの単語で埋める

分類Dev

文字列をtxtファイルからPythonの配列に変換する

分類Dev

テキストフィールドからJSONファイルに複数行の文字列を保存する

分類Dev

テキストフィールドからJSONファイルに複数行の文字列を保存する

分類Dev

C#でtxtファイルからXML要素を削除する方法

分類Dev

txtファイルに特定の文字列をリストしてからcsvファイルに配置する正しい方法は何ですか?[python]

分類Dev

bashでJSONのプリティファイを解除する

分類Dev

入力.txtファイル名から文字列を保存する-MATLAB

分類Dev

python3.xのtxtファイルから文字列を印刷する方法

分類Dev

txtファイルから文字列を読み取り、C ++の最初の行で停止します

分類Dev

C-.txtファイルから読み取り、配列内に文字を格納する

分類Dev

txtファイル内の文字列から行を削除

分類Dev

Cのtxtファイルからリンクリストを読み取る

分類Dev

txtファイルからread.table

Related 関連記事

  1. 1

    txtファイルから文字列、変数を取得し、メインスクリプトで使用する

  2. 2

    C#あるtxtファイルから別のtxtファイルにテキストを挿入する

  3. 3

    JTable txtファイルから文字列を作成する方法は?

  4. 4

    TXTファイルからCSVファイルを作成する

  5. 5

    文字列に外部.txtファイルからテキストを比較する方法

  6. 6

    C ++-。txtファイルから配列に保存しますか?

  7. 7

    Javaで.txtファイルから文字列を分割する簡単な方法

  8. 8

    Pythonでtxtファイルから最初のN文字列を保存する方法は?

  9. 9

    c# で txt ファイルから 1 文字にアクセスする

  10. 10

    生のtxtファイルから文字列を読み取る

  11. 11

    txtファイルから文字列を削除します

  12. 12

    CMDからファイルデータを取得する方法:dir> filename.txtテキストファイル?C

  13. 13

    C#を使用して.txtファイルから特定の番号をフィルタリングする

  14. 14

    JavaプロパティファイルをJSON文字列に変換する

  15. 15

    並列配列をtxtファイルから分離する

  16. 16

    文字列の配列をファイルtxtからの単語で埋める

  17. 17

    文字列をtxtファイルからPythonの配列に変換する

  18. 18

    テキストフィールドからJSONファイルに複数行の文字列を保存する

  19. 19

    テキストフィールドからJSONファイルに複数行の文字列を保存する

  20. 20

    C#でtxtファイルからXML要素を削除する方法

  21. 21

    txtファイルに特定の文字列をリストしてからcsvファイルに配置する正しい方法は何ですか?[python]

  22. 22

    bashでJSONのプリティファイを解除する

  23. 23

    入力.txtファイル名から文字列を保存する-MATLAB

  24. 24

    python3.xのtxtファイルから文字列を印刷する方法

  25. 25

    txtファイルから文字列を読み取り、C ++の最初の行で停止します

  26. 26

    C-.txtファイルから読み取り、配列内に文字を格納する

  27. 27

    txtファイル内の文字列から行を削除

  28. 28

    Cのtxtファイルからリンクリストを読み取る

  29. 29

    txtファイルからread.table

ホットタグ

アーカイブ