libstud-json/0.4.3

[brief]

JSON pull-parser/push-serializer library for C++

A portable, dependency-free, MIT-licensed JSON pull-parser/push-serializer library for C++.

The goal of this library is to provide a pull-style parser (instead of push/SAX or DOM) and push-style serializer with clean, modern interfaces and conforming, well-tested (and well-fuzzed, including the serializer) implementations. In particular, pull-style parsers are not very common, and we couldn't find any C++ implementations that also satisfy the above requirements.

Typical parser usage (low-level API):

#include <libstud/json/parser.hxx>

int main ()
{
  using namespace stud::json;

  parser p (std::cin, "<stdin>");

  for (event e: p)
  {
    switch (e)
    {
    case event::begin_object:
      // ...
    case event::end_object:
      // ...
    case event::name:
      {
        const std::string& n (p.name ());
        // ...
      }
    case event::number:
      {
        std::int64_t n (p.value<std::int64_t> ());
        // ...
      }
    }
  }
}

Or using the higher-level API to parse a specific JSON vocabulary:

#include <libstud/json/parser.hxx>

int main ()
{
  using namespace stud::json;

  parser p (std::cin, "<stdin>");

  p.next_expect (event::begin_object);
  {
    std::string planet (p.next_expect_member_string ("planet"));

    p.next_expect_member_array ("measurements");
    while (p.next_expect (event::number, event::end_array))
    {
      std::uint64 m (p.value<std::uint64> ());
    }
  }
  p.next_expect (event::end_object);
}

See the libstud/json/parser.hxx header for the parser interface details and the libstud/json/event.hxx header for the complete list of events.

Typical serializer usage:

#include <libstud/json/serializer.hxx>

int main ()
{
  using namespace stud::json;

  stream_serializer s (std::cout);

  s.begin_object ();
  s.member ("planet", "Venus");
  s.member_name ("measurement");
  s.begin_array ();
  s.value (123);
  s.value (234);
  s.value (345);
  s.end_array ();
  s.end_object ();
}

See the libstud/json/serializer.hxx header for the serializer interface details.

See the NEWS file for changes and the cppget.org/libstud-json package page for build status.

version 0.4.3
license MITMIT License
repository https://pkg.cppget.org/1/alpha
download libstud-json-0.4.3.tar.gz
sha256 b9a2b95c5e0bc8cb7dbbf25eada76454afff8585d7611c68dd5cc9d3c7cf0d0d
project libstud
url github.com/libstud/libstud-json
topics C++JSONparsingserializationstreaming

Depends (1)

libstud-optional ^1.0.0

Reviews

fail 0
pass 1

Builds

toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_rhel_9-gcc_11-bindist
timestamp 2025-09-24 13:24:16 UTC (13:06:19 hours ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_fedora_40-gcc_14-bindist
timestamp 2025-09-24 05:04:48 UTC (21:25:46 hours ago)
result success | log | rebuild
toolchain public-0.17.0
target aarch64-linux-gnu
tgt config linux_debian_12-clang_18_libc++-static_O3
timestamp 2025-09-24 03:59:14 UTC (22:31:20 hours ago)
result success | log | rebuild
toolchain public-0.17.0
target aarch64-linux-gnu
tgt config linux_debian_12-clang_18_libc++-O3
timestamp 2025-09-24 03:57:22 UTC (22:33:13 hours ago)
result success | log | rebuild
toolchain public-0.17.0
target aarch64-linux-gnu
tgt config linux_debian_12-clang_18-static_O3
timestamp 2025-09-24 03:51:39 UTC (22:38:55 hours ago)
result success | log | rebuild
toolchain public-0.17.0
target aarch64-linux-gnu
tgt config linux_debian_12-clang_18_libc++
timestamp 2025-09-24 03:45:46 UTC (22:44:49 hours ago)
result success | log | rebuild
toolchain public-0.17.0
target aarch64-linux-gnu
tgt config linux_debian_12-clang_18
timestamp 2025-09-24 03:43:58 UTC (22:46:36 hours ago)
result success | log | rebuild
toolchain public-0.17.0
target aarch64-linux-gnu
tgt config linux_debian_12-clang_18-O3
timestamp 2025-09-24 03:42:42 UTC (22:47:52 hours ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_rhel_8-gcc_8-bindist
timestamp 2025-09-23 21:00:59 UTC (01 05:29:36 days ago)
result success | log | rebuild
toolchain public-0.17.0
target aarch64-linux-gnu
tgt config linux_debian_12-clang_17_libc++
timestamp 2025-09-23 15:42:29 UTC (01 10:48:06 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-w64-mingw32
tgt config windows_10-gcc_13.2_mingw_w64-static_O2
timestamp 2025-09-22 22:44:13 UTC (02 03:46:21 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-microsoft-win32-msvc14.3
tgt config windows_10-msvc_17.10-static_O2
timestamp 2025-09-22 22:44:05 UTC (02 03:46:30 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-microsoft-win32-msvc14.3
tgt config windows_10-clang_18_llvm_msvc_17.10-static_O2
timestamp 2025-09-22 22:42:41 UTC (02 03:47:54 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-w64-mingw32
tgt config windows_10-gcc_13.2_mingw_w64-O2
timestamp 2025-09-22 22:42:32 UTC (02 03:48:02 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-microsoft-win32-msvc14.3
tgt config windows_10-msvc_17.10-O2
timestamp 2025-09-22 22:40:35 UTC (02 03:49:59 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-microsoft-win32-msvc14.3
tgt config windows_10-msvc_17.8-static_O2
timestamp 2025-09-22 22:39:44 UTC (02 03:50:51 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-microsoft-win32-msvc14.3
tgt config windows_10-clang_18_llvm_msvc_17.10
timestamp 2025-09-22 22:39:22 UTC (02 03:51:13 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-w64-mingw32
tgt config windows_10-gcc_13.2_mingw_w64
timestamp 2025-09-22 22:38:28 UTC (02 03:52:06 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-microsoft-win32-msvc14.3
tgt config windows_10-clang_18_llvm_msvc_17.10-O2
timestamp 2025-09-22 22:37:31 UTC (02 03:53:03 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-microsoft-win32-msvc14.3
tgt config windows_10-clang_17_msvc_msvc_17.10
timestamp 2025-09-22 22:36:52 UTC (02 03:53:43 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-microsoft-win32-msvc14.3
tgt config windows_10-msvc_17.10
timestamp 2025-09-22 22:35:41 UTC (02 03:54:54 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-microsoft-win32-msvc14.3
tgt config windows_10-msvc_17.8
timestamp 2025-09-22 22:35:22 UTC (02 03:55:13 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-microsoft-win32-msvc14.3
tgt config windows_10-msvc_17.8-O2
timestamp 2025-09-22 22:34:31 UTC (02 03:56:03 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_12-gcc_14-static_O3
timestamp 2025-09-22 22:29:43 UTC (02 04:00:51 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-freebsd13.3
tgt config freebsd_13-clang_17
timestamp 2025-09-22 22:26:08 UTC (02 04:04:26 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_12-gcc_12-bindist
timestamp 2025-09-22 22:23:50 UTC (02 04:06:45 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_12-gcc_14-ndebug_O3
timestamp 2025-09-22 22:21:59 UTC (02 04:08:35 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_ubuntu_24.04-gcc_13-bindist
timestamp 2025-09-22 22:19:56 UTC (02 04:10:38 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_12-gcc_14-O3
timestamp 2025-09-22 22:16:38 UTC (02 04:13:56 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-freebsd14.1
tgt config freebsd_14-clang_18-static_O3
timestamp 2025-09-22 22:14:14 UTC (02 04:16:20 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_12-gcc_14
timestamp 2025-09-22 22:11:01 UTC (02 04:19:33 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_12-clang_17_libc++
timestamp 2025-09-22 22:07:55 UTC (02 04:22:39 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-freebsd14.1
tgt config freebsd_14-clang_18-O3
timestamp 2025-09-22 22:06:18 UTC (02 04:24:17 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_12-gcc_13.1
timestamp 2025-09-22 22:03:51 UTC (02 04:26:43 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-freebsd14.1
tgt config freebsd_14-clang_18
timestamp 2025-09-22 22:02:15 UTC (02 04:28:20 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_12-clang_17
timestamp 2025-09-22 22:01:11 UTC (02 04:29:23 days ago)
result success | log | rebuild
toolchain public-0.17.0
target aarch64-linux-gnu
tgt config linux_debian_12-clang_17
timestamp 2025-09-22 17:41:24 UTC (02 08:49:10 days ago)
result success | log | rebuild
toolchain public-0.17.0
target aarch64-linux-gnu
tgt config linux_debian_12-gcc_13
timestamp 2025-09-22 16:50:03 UTC (02 09:40:32 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_10-gcc_10.2
timestamp 2025-09-22 14:14:58 UTC (02 12:15:37 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_11-clang_13.0
timestamp 2025-09-22 14:14:27 UTC (02 12:16:07 days ago)
result success | log | rebuild
toolchain public-0.17.0
target aarch64-linux-gnu
tgt config linux_debian_12-gcc_14-static_O3
timestamp 2025-09-22 09:16:17 UTC (02 17:14:17 days ago)
result success | log | rebuild
toolchain public-0.17.0
target aarch64-linux-gnu
tgt config linux_debian_12-gcc_14-ndebug_O3
timestamp 2025-09-22 09:12:24 UTC (02 17:18:10 days ago)
result success | log | rebuild
toolchain public-0.17.0
target aarch64-linux-gnu
tgt config linux_debian_12-gcc_14
timestamp 2025-09-22 09:11:45 UTC (02 17:18:49 days ago)
result success | log | rebuild
toolchain public-0.17.0
target aarch64-linux-gnu
tgt config linux_debian_12-gcc_14-O3
timestamp 2025-09-22 09:09:04 UTC (02 17:21:31 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-microsoft-win32-msvc14.3
tgt config windows_10-clang_14.0_llvm_msvc_17.2_lld
timestamp 2025-09-22 04:58:33 UTC (02 21:32:02 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-microsoft-win32-msvc14.2
tgt config windows_10_devmode-msvc_16.11
timestamp 2025-09-22 04:57:08 UTC (02 21:33:26 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-microsoft-win32-msvc14.2
tgt config windows_10-msvc_16.11
timestamp 2025-09-22 04:53:50 UTC (02 21:36:44 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-microsoft-win32-msvc14.0
tgt config windows_10-msvc_14.3
timestamp 2025-09-22 04:53:22 UTC (02 21:37:13 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-microsoft-win32-msvc14.1
tgt config windows_10-msvc_15.9
timestamp 2025-09-22 04:47:11 UTC (02 21:43:24 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_ubuntu_22.04-gcc_11-bindist
timestamp 2025-09-22 04:24:50 UTC (02 22:05:44 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_9-gcc_8.4
timestamp 2025-09-22 04:24:14 UTC (02 22:06:20 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_9-clang_8.0_libc++
timestamp 2025-09-22 04:24:06 UTC (02 22:06:28 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_9-clang_7.0_libc++
timestamp 2025-09-22 04:23:57 UTC (02 22:06:37 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_9-clang_6.0_libc++
timestamp 2025-09-22 04:23:36 UTC (02 22:06:59 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_12-clang_15.0_libc++
timestamp 2025-09-22 04:23:27 UTC (02 22:07:07 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_12-clang_16.0_libc++
timestamp 2025-09-22 04:23:18 UTC (02 22:07:16 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_9-gcc_7.4
timestamp 2025-09-22 04:22:49 UTC (02 22:07:45 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_9-clang_8.0
timestamp 2025-09-22 04:22:43 UTC (02 22:07:52 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_12-clang_15.0
timestamp 2025-09-22 04:22:03 UTC (02 22:08:32 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_9-clang_7.0
timestamp 2025-09-22 04:21:26 UTC (02 22:09:08 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_9-clang_6.0
timestamp 2025-09-22 04:21:11 UTC (02 22:09:23 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_12-clang_16.0
timestamp 2025-09-22 04:21:02 UTC (02 22:09:32 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_8-gcc_4.9
timestamp 2025-09-22 04:20:38 UTC (02 22:09:56 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_10-clang_9.0_libc++
timestamp 2025-09-22 04:20:28 UTC (02 22:10:07 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_10-clang_12.0_libc++
timestamp 2025-09-22 04:19:58 UTC (02 22:10:36 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_11-clang_13.0_libc++
timestamp 2025-09-22 04:19:48 UTC (02 22:10:46 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_11-clang_14.0_libc++
timestamp 2025-09-22 04:19:35 UTC (02 22:11:00 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_11-gcc_11.3
timestamp 2025-09-22 04:19:19 UTC (02 22:11:15 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_10-clang_11.0_libc++
timestamp 2025-09-22 04:19:09 UTC (02 22:11:26 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_10-clang_10.0_libc++
timestamp 2025-09-22 04:18:58 UTC (02 22:11:36 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_10-clang_9.0
timestamp 2025-09-22 04:18:45 UTC (02 22:11:49 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_11-gcc_10.2-bindist
timestamp 2025-09-22 04:18:28 UTC (02 22:12:06 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_11-clang_14.0
timestamp 2025-09-22 04:18:19 UTC (02 22:12:15 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_10-clang_12.0
timestamp 2025-09-22 04:18:05 UTC (02 22:12:29 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_10-clang_11.0
timestamp 2025-09-22 04:17:51 UTC (02 22:12:43 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_10-clang_10.0
timestamp 2025-09-22 04:17:43 UTC (02 22:12:51 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_10-gcc_9.3
result unbuilt
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_11-gcc_12.1
result unbuilt
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_12-clang_18
result unbuilt
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_12-clang_18-O3
result unbuilt
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_12-clang_18-static_O3
result unbuilt
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_12-clang_18_libc++
result unbuilt
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_12-clang_18_libc++-O3
result unbuilt
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_12-clang_18_libc++-static_O3
result unbuilt
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_fedora_39-gcc_13-bindist
result unbuilt
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_ubuntu_16.04-clang_3.7_libc++
result unbuilt
toolchain public-0.17.0
target x86_64-apple-darwin22.5.0
tgt config macos_13-clang_15.0
result unbuilt
toolchain public-0.17.0
target x86_64-apple-darwin23.5.0
tgt config macos_14-clang_15.0
result unbuilt
toolchain public-0.17.0
target x86_64-apple-darwin23.5.0
tgt config macos_14-clang_15.0-O3
result unbuilt
toolchain public-0.17.0
target x86_64-apple-darwin23.5.0
tgt config macos_14-clang_15.0-static_O3
result unbuilt
toolchain public-0.17.0
target x86_64-apple-darwin23.5.0
tgt config macos_14-gcc_14_homebrew
result unbuilt
toolchain public-0.17.0
target x86_64-apple-darwin23.5.0
tgt config macos_14-gcc_14_homebrew-O3
result unbuilt
toolchain public-0.17.0
target x86_64-apple-darwin23.5.0
tgt config macos_14-gcc_14_homebrew-static_O3
result unbuilt

Changes

During the pre-1.0.0 development see the revision history.