You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

46 lines
1.0 KiB

  1. #include <json.hpp>
  2. using json = nlohmann::json;
  3. int main()
  4. {
  5. // correct JSON pointers
  6. json::json_pointer p1;
  7. json::json_pointer p2("");
  8. json::json_pointer p3("/");
  9. json::json_pointer p4("//");
  10. json::json_pointer p5("/foo/bar");
  11. json::json_pointer p6("/foo/bar/-");
  12. json::json_pointer p7("/foo/~0");
  13. json::json_pointer p8("/foo/~1");
  14. // error: JSON pointer does not begin with a slash
  15. try
  16. {
  17. json::json_pointer p9("foo");
  18. }
  19. catch (std::domain_error& e)
  20. {
  21. std::cout << "domain_error: " << e.what() << '\n';
  22. }
  23. // error: JSON pointer uses escape symbol ~ not followed by 0 or 1
  24. try
  25. {
  26. json::json_pointer p10("/foo/~");
  27. }
  28. catch (std::domain_error& e)
  29. {
  30. std::cout << "domain_error: " << e.what() << '\n';
  31. }
  32. // error: JSON pointer uses escape symbol ~ not followed by 0 or 1
  33. try
  34. {
  35. json::json_pointer p11("/foo/~3");
  36. }
  37. catch (std::domain_error& e)
  38. {
  39. std::cout << "domain_error: " << e.what() << '\n';
  40. }
  41. }