В плане парсинга JSON в C# существует два разных подхода - через класс или через dynamic. Класс правильнее использовать если вам в дальнейшем что-то надо будет делать или как-то обрабатывать-пересылать. Если требуется получить только одно единственное значение, то можете обойтись dynamic. Но конкретно в вашем случае класс не поможет, так как достаточно странный JSON и я бы сказал, что не совсем валидный. Но выдернуть значение можно - (используем, как уже подсказали выше, Newtonsoft.NET)
var updates = (JContainer)JObject.Parse(json)["updates"];
dynamic results = updates.Descendants()
.OfType<JObject>()
.Where(x => x["source_text"] != null).FirstOrDefault();
Console.WriteLine(results.source_text);
PS: Сгененировать класс по JSON`у можно к примеру на
json2csharp.com но по вашему примеру как раз и видно, что не особо класс тут поможет.