You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The issue with the macros that are defined is that they are all written with nlohmann::json and there are no set of macros written with nlohmann::ordered_json.
The solution I did that ended up working for me was to write a secondary header file in my project, and write a couple of new macros that matched the original, except all I did was change the type from nlohmann::json to nlohmann::ordered_json.
#pragma once
#ifndef JSON_H
#defineJSON_H//||||||||||||||||||||||||||||| INCLUDED DEPENDENCIES |||||||||||||||||||||||||||||//||||||||||||||||||||||||||||| INCLUDED DEPENDENCIES |||||||||||||||||||||||||||||//||||||||||||||||||||||||||||| INCLUDED DEPENDENCIES |||||||||||||||||||||||||||||//THIRD PARTY: JSON Library
#include<nlohmann/json.hpp>//||||||||||||||||||||||||||||| NEW MACROS |||||||||||||||||||||||||||||//||||||||||||||||||||||||||||| NEW MACROS |||||||||||||||||||||||||||||//||||||||||||||||||||||||||||| NEW MACROS |||||||||||||||||||||||||||||
#defineNLOHMANN_ORDERED_DEFINE_TYPE_INTRUSIVE(Type, ...) \
friendvoidto_json(nlohmann::ordered_json& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \
friendvoidfrom_json(const nlohmann::ordered_json& nlohmann_json_j, Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM, __VA_ARGS__)) }
#defineNLOHMANN_ORDERED_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT(Type, ...) \
friendvoidto_json(nlohmann::ordered_json& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \
friendvoidfrom_json(const nlohmann::ordered_json& nlohmann_json_j, Type& nlohmann_json_t) { const Type nlohmann_json_default_obj{}; NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM_WITH_DEFAULT, __VA_ARGS__)) }
#endif
I would include this header I created into all of my other struct/classes and replace the original lines where I would use... NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT
I would replace it with the new macro I defined in the header file... NLOHMANN_ORDERED_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT
Description
If a type is defined with
NLOHMANN_DEFINE_TYPE_INTRUSIVE
, it cannot directly be used withordered_json
.Reproduction steps
Expected vs. actual results
I would expect
nlohmann::ordered_json my_ordered_json = custom_type
; to compileMinimal code example
No response
Error messages
No response
Compiler and operating system
gcc 13.1
Library version
trunk on godbolt
Validation
develop
branch is used.The text was updated successfully, but these errors were encountered: