我使用以下代码使用nlohmann库创建了json对象:

nlohmann::json dataJson;
auto data = dataJson.array();

data[0]["message"] = "String";
data[0]["timestamp"] = 123;

输出是
{"message":"String", "timestamp": 123}

但我希望输出是
[{"message":"String", "timestamp": 123}]

在一个数组中以便具有多个消息的能力。

所以我想问一下在数组中添加值的最佳方法是什么,因为当我打印它时,数组的输出为null。

我是cpp的新手,所以我想为这个问题道歉,如果认为这太简单了,但是对您有所帮助。

最佳答案

nlohmann_json是一个非常有用的库,但确实有一些怪癖。我发现最好将意图明确。

Lambda在这里可能非常有用:

#include <iostream>
#include <nlohmann/json.hpp>

int main() {

  auto make_object = []
  {
    auto result = nlohmann::json::object();
    result["message"] = "String";
    result["timestamp"] = 123;
    return result;
  };

  auto make_array = [&make_object]
  {
    auto result = nlohmann::json::array();
    result.push_back(make_object());
    return result;
  };

  auto data = make_array();
  std::cout << data.dump() << std::endl;

  return 0;
}

预期输出:
[{"message":"String","timestamp":123}]

10-06 15:06