Exemplo n.º 1
0
    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();
    }
Exemplo n.º 2
0
    // 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");
        }
    }