Other typesΒΆ
Some types that are not used to store settings require different to_json
and from_json
implementations. If these types are prone to be used in different parts of the json_interface
, their to_json
and from_json
should be declared in Tudat/JsonInterface/Support/valueConversions.h
. As discussed previously, there are already some functions in that file, such as custom implementations for std::map
and std::unordered_map
that ignore the special keys, for std::vector
containing non-primitive types, and for Eigen::Matrix
.
Additionally, there are functions for std::complex
, so that the following is possible:
nlohmann::json j = "(1,-0.5)";
std::complex< double > complexNumber = j; // 1 - 0.5i
For std::pair
:
nlohmann::json j = R"(
[
6,
"keplerian"
]
)"_json;
std::pair< int, std::string > pair = j; // { 6, "keplerian" }
And for Eigen::Quaterniond
, so that it can be created directly from an Eigen::Matrix3d
when the provided nlohmann::json
object is of value type array, or using the function spice_interface::computeRotationQuaternionBetweenFrames
when it is of value type object. Thus, it is possible to create an Eigen::Quaterniond
from any of these two JSON files:
[
[ 1, 0, 0 ],
[ 0, 1, -1 ],
[ 0, -1, 1 ]
]
{
"originalFrame": "ECLIPJ2000",
"targetFrame": "IAU_Earth",
"initialTime": 0
}