using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.ComponentModel;
using System.Xml.Serialization;
using System.Runtime.Serialization;
using System.Text.RegularExpressions;
using System.Globalization;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json.Converters;
using Newtonsoft.Json.Serialization;
static string GetResponseText()
""message"": ""422 Unprocessable Entity"",
""The email must be a valid email address.""
""The password must be at least 8 characters.""
internal static void Test()
var responseText = GetResponseText();
Console.WriteLine("Original JSON: ");
Console.WriteLine(responseText);
TestStatic(responseText);
TestDynamic(responseText);
static void TestStatic(string responseText)
var token = JToken.Parse(responseText);
var errors = token.SelectTokens("errors..*")
Console.WriteLine("Result of SelectTokens parsing of JSON: ");
Console.WriteLine(JsonConvert.SerializeObject(errors, Formatting.Indented));
static void TestDynamic(string responseText )
var errors = new List<string>();
dynamic responseObject = JsonConvert.DeserializeObject(responseText);
foreach (dynamic errorList in responseObject["errors"].Children())
foreach (dynamic error in errorList.Children())
errors.Add((string)error);
Console.WriteLine("Result of Dynamic parsing of JSON: ");
Console.WriteLine(JsonConvert.SerializeObject(errors, Formatting.Indented));
public static void Main()
Console.WriteLine("Json.NET version: " + typeof(JsonSerializer).Assembly.FullName);