Я относительно свободно использую json.net, но я изо всех сил пытаюсь получить это значение простым способом.
Я чувствую, что json.net должен быть в состоянии вывести то, что я пытаюсьсделайте так, чтобы мне не приходилось делать каждый шаг по пути, чтобы получить то, что я хочу.
Ниже моя первая неудачная попытка и вторая попытка, с которой я приступил к работе. Хотя вторая попытка работает, я хотел бы упростить код, чтобы он был немного похож на первый.
Обратите внимание, что я не могу предположить, что объект "C" - это тот, который содержит объектЯ хочу.
var jt = JToken.Parse(@"{
""A"": {
""name"": ""object1"",
""order"": ""1"",
""type"": ""val""
},
""B"": {
""order"": ""2"",
""type"": ""val"",
},
""C"": {
""name"": ""object3"",
""type"": ""val"",
""answer"": ""Yes"", ""<------ comment"": ""this is the value I'm trying to get""
}
}");
//var firstAttempt = (jt.First(j => j["name"] == "object3"))["answer"]; // cannot be applied to operands of type 'JToken' and 'String'
var thisWorksFine = jt.First(a => a.ToObject<JProperty>()
.Value.ToObject<JObject>()["name"]?.ToString() == "object3")
.ToObject<JProperty>()
.Value["answer"];
Итак, мой вопрос: есть ли способ получить значение без приведения каждого объекта / свойства и в конечном итоге получить код, который больше похож на мою первую попытку? Если моя вторая попытка более или менее необходима, это нормально.