static void CreateJsonPointer() { using var doc = JsonDocument.Parse(@" [ { ""key"": true, ""other~key"": [""foo""] }, { ""key"": false, ""other~key"": [""bar"", ""baz""] }, { ""key"": true, ""other~key"": [""qux""] } ] "); var options = new JsonSerializerOptions() { WriteIndented = true }; var tokens = new List <string> { "1", "other~key" }; JsonPointer aPointer = new JsonPointer(tokens); Console.WriteLine($"(1) {aPointer}"); //(1) /1/other~0key Console.WriteLine(); JsonPointer anotherPointer = JsonPointer.Append(aPointer, 1); Console.WriteLine($"(2) {anotherPointer}"); //(2) /1/other~0key/1 Console.WriteLine(); JsonElement element; if (anotherPointer.TryGetValue(doc.RootElement, out element)) { Console.WriteLine($"(3) {JsonSerializer.Serialize(element, options)}\n"); } //(3) "baz" Console.WriteLine(); }
// Examples from RFC 6901 static void GetValueExamples() { using var doc = JsonDocument.Parse(@" { ""foo"": [""bar"", ""baz""], """": 0, ""a/b"": 1, ""c%d"": 2, ""e^f"": 3, ""g|h"": 4, ""i\\j"": 5, ""k\""l"": 6, "" "": 7, ""m~n"": 8 } "); var options = new JsonSerializerOptions() { WriteIndented = true }; JsonElement element; if (JsonPointer.TryGetValue(doc.RootElement, "", out element)) { Console.WriteLine($"(1)\n{JsonSerializer.Serialize(element, options)}\n"); } if (JsonPointer.TryGetValue(doc.RootElement, "/foo", out element)) { Console.WriteLine($"(2)\n{JsonSerializer.Serialize(element, options)}\n"); } if (JsonPointer.TryGetValue(doc.RootElement, "/foo/0", out element)) { Console.WriteLine($"(3)\n{JsonSerializer.Serialize(element, options)}\n"); } if (JsonPointer.TryGetValue(doc.RootElement, "/", out element)) { Console.WriteLine($"(4)\n{JsonSerializer.Serialize(element, options)}\n"); } if (JsonPointer.TryGetValue(doc.RootElement, "/a~1b", out element)) { Console.WriteLine($"(5)\n{JsonSerializer.Serialize(element, options)}\n"); } if (JsonPointer.TryGetValue(doc.RootElement, "/c%d", out element)) { Console.WriteLine($"(6)\n{JsonSerializer.Serialize(element, options)}\n"); } if (JsonPointer.TryGetValue(doc.RootElement, "/e^f", out element)) { Console.WriteLine($"(7)\n{JsonSerializer.Serialize(element, options)}\n"); } if (JsonPointer.TryGetValue(doc.RootElement, "/g|h", out element)) { Console.WriteLine($"(8)\n{JsonSerializer.Serialize(element, options)}\n"); } if (JsonPointer.TryGetValue(doc.RootElement, "/i\\j", out element)) { Console.WriteLine($"(9)\n{JsonSerializer.Serialize(element, options)}\n"); } if (JsonPointer.TryGetValue(doc.RootElement, "/k\"l", out element)) { Console.WriteLine($"(10)\n{JsonSerializer.Serialize(element, options)}\n"); } if (JsonPointer.TryGetValue(doc.RootElement, "/ ", out element)) { Console.WriteLine($"(11)\n{JsonSerializer.Serialize(element, options)}\n"); } if (JsonPointer.TryGetValue(doc.RootElement, "/m~0n", out element)) { Console.WriteLine($"(12)\n{JsonSerializer.Serialize(element, options)}\n"); } }