Open3D (C++ API)  0.18.0+90810a3
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 
14 #include "open3d/utility/Eigen.h"
15 
17 namespace Json {
18 class Value;
19 } // namespace Json
21 
22 namespace open3d {
23 namespace utility {
24 
30 Json::Value StringToJson(const std::string &json_str);
31 
36 std::string JsonToString(const Json::Value &json);
37 
41 public:
42  virtual ~IJsonConvertible() {}
43 
44 public:
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 
51 public:
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 
85 namespace fmt {
86 template <>
87 struct 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: DLPack.h:195
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