Skip to content

# JSON_HAS_FILESYSTEM / JSON_HAS_EXPERIMENTAL_FILESYSTEM

    #define JSON_HAS_FILESYSTEM /* value */
    #define JSON_HAS_EXPERIMENTAL_FILESYSTEM /* value */

When compiling with C++17, the library provides conversions from and to `std::filesystem::path`. As compiler support for filesystem is limited, the library tries to detect whether `<filesystem>`/`std::filesystem` (`JSON_HAS_FILESYSTEM`) or `<experimental/filesystem>`/`std::experimental::filesystem` (`JSON_HAS_EXPERIMENTAL_FILESYSTEM`) should be used. To override the built-in check, define `JSON_HAS_FILESYSTEM` or `JSON_HAS_EXPERIMENTAL_FILESYSTEM` to `1`.

## Default definition

The default value is detected based on the preprocessor macros `__cpp_lib_filesystem`, `__cpp_lib_experimental_filesystem`, `__has_include(<filesystem>)`, or `__has_include(<experimental/filesystem>)`.

## Notes

- Note that older compilers or older versions of libstd++ also require the library `stdc++fs` to be linked to for filesystem support.
- Both macros are undefined outside the library.

## Examples

Example

The code below forces the library to use the header `<experimental/filesystem>`.

    #define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1
    #include <nlohmann/json.hpp>

    ...

## Version history

- Added in version 3.10.5.

Last update: May 17, 2022
Back to top