Open3D (C++ API)  0.17.0
Loading...
Searching...
No Matches
IJsonConvertible.h
Go to the documentation of this file.
1// ----------------------------------------------------------------------------
2// - Open3D: www.open3d.org -
3// ----------------------------------------------------------------------------
4// Copyright (c) 2018-2023 www.open3d.org
5// SPDX-License-Identifier: MIT
6// ----------------------------------------------------------------------------
7
8#pragma once
9
10#include <fmt/format.h>
11
12#include <Eigen/Core>
13
15
17namespace Json {
18class Value;
19} // namespace Json
21
22namespace open3d {
23namespace utility {
24
30Json::Value StringToJson(const std::string &json_str);
31
36std::string JsonToString(const Json::Value &json);
37
41public:
42 virtual ~IJsonConvertible() {}
43
44public:
45 virtual bool ConvertToJsonValue(Json::Value &value) const = 0;
46 virtual bool ConvertFromJsonValue(const Json::Value &value) = 0;
47
49 virtual std::string ToString() const;
50
51public:
52 static bool EigenVector3dFromJsonArray(Eigen::Vector3d &vec,
53 const Json::Value &value);
54 static bool EigenVector3dToJsonArray(const Eigen::Vector3d &vec,
55 Json::Value &value);
56 static bool EigenVector4dFromJsonArray(Eigen::Vector4d &vec,
57 const Json::Value &value);
58 static bool EigenVector4dToJsonArray(const Eigen::Vector4d &vec,
59 Json::Value &value);
60 static bool EigenMatrix3dFromJsonArray(Eigen::Matrix3d &mat,
61 const Json::Value &value);
62 static bool EigenMatrix3dToJsonArray(const Eigen::Matrix3d &mat,
63 Json::Value &value);
64 static bool EigenMatrix4dFromJsonArray(Eigen::Matrix4d &mat,
65 const Json::Value &value);
66 static bool EigenMatrix4dToJsonArray(const Eigen::Matrix4d &mat,
67 Json::Value &value);
68 static bool EigenMatrix4dFromJsonArray(Eigen::Matrix4d_u &mat,
69 const Json::Value &value);
70 static bool EigenMatrix4dToJsonArray(const Eigen::Matrix4d_u &mat,
71 Json::Value &value);
72 static bool EigenMatrix6dFromJsonArray(Eigen::Matrix6d &mat,
73 const Json::Value &value);
74 static bool EigenMatrix6dToJsonArray(const Eigen::Matrix6d &mat,
75 Json::Value &value);
76 static bool EigenMatrix6dFromJsonArray(Eigen::Matrix6d_u &mat,
77 const Json::Value &value);
78 static bool EigenMatrix6dToJsonArray(const Eigen::Matrix6d_u &mat,
79 Json::Value &value);
80};
81
82} // namespace utility
83} // namespace open3d
84
85namespace fmt {
86template <>
87struct formatter<Json::Value> {
88 template <typename FormatContext>
89 auto format(const Json::Value &value, FormatContext &ctx)
90 -> decltype(ctx.out()) {
91 return format_to(ctx.out(), "{}", open3d::utility::JsonToString(value));
92 }
93
94 template <typename ParseContext>
95 constexpr auto parse(ParseContext &ctx) -> decltype(ctx.begin()) {
96 return ctx.begin();
97 }
98};
99
100} // namespace fmt
Definition IJsonConvertible.h:40
static bool EigenMatrix4dFromJsonArray(Eigen::Matrix4d &mat, const Json::Value &value)
Definition IJsonConvertible.cpp:106
static bool EigenVector3dFromJsonArray(Eigen::Vector3d &vec, const Json::Value &value)
Definition IJsonConvertible.cpp:41
static bool EigenVector4dFromJsonArray(Eigen::Vector4d &vec, const Json::Value &value)
Definition IJsonConvertible.cpp:62
virtual bool ConvertFromJsonValue(const Json::Value &value)=0
static bool EigenMatrix6dFromJsonArray(Eigen::Matrix6d &mat, const Json::Value &value)
Definition IJsonConvertible.cpp:148
static bool EigenMatrix3dFromJsonArray(Eigen::Matrix3d &mat, const Json::Value &value)
Definition IJsonConvertible.cpp:85
static bool EigenMatrix6dToJsonArray(const Eigen::Matrix6d &mat, Json::Value &value)
Definition IJsonConvertible.cpp:160
virtual bool ConvertToJsonValue(Json::Value &value) const =0
static bool EigenMatrix4dToJsonArray(const Eigen::Matrix4d &mat, Json::Value &value)
Definition IJsonConvertible.cpp:118
static bool EigenVector4dToJsonArray(const Eigen::Vector4d &vec, Json::Value &value)
Definition IJsonConvertible.cpp:75
static bool EigenVector3dToJsonArray(const Eigen::Vector3d &vec, Json::Value &value)
Definition IJsonConvertible.cpp:53
virtual std::string ToString() const
Convert to a styled string representation of JSON data for display.
Definition IJsonConvertible.cpp:35
static bool EigenMatrix3dToJsonArray(const Eigen::Matrix3d &mat, Json::Value &value)
Definition IJsonConvertible.cpp:97
virtual ~IJsonConvertible()
Definition IJsonConvertible.h:42
Definition IJsonConvertible.h:85
Json::Value StringToJson(const std::string &json_str)
Parse string and convert to Json::value. Throws exception if the conversion is invalid.
Definition IJsonConvertible.cpp:19
std::string JsonToString(const Json::Value &json)
Serialize a Json::Value to a string.
Definition IJsonConvertible.cpp:31
Definition PinholeCameraIntrinsic.cpp:16
constexpr auto parse(ParseContext &ctx) -> decltype(ctx.begin())
Definition IJsonConvertible.h:95
auto format(const Json::Value &value, FormatContext &ctx) -> decltype(ctx.out())
Definition IJsonConvertible.h:89