Как прочитать значение из свойства внутри JToken с помощью метода TryGetPropertyValue или JSON-пути?

#c# #json.net #jsonpath

Вопрос:

Задано JToken заданное расстояние со следующим содержанием

 { "232": { "travelDistance": 25.0 } }
 

Я хотел бы прочитать полевое расстояние от него. Сначала я попробовал это

 distance.TryGetPropertyValue("travelDistance", float.MaxValue)
 

но это возвращает запасное значение float.MaxValue . Затем я попытался использовать путь в формате JSON

 distance.SelectToken("$.travelDistance")
 

но это возвращается null . Это мои результаты отладки

введите описание изображения здесь

Как я могу прочитать значение свойства travelDistance?

Ответ №1:

С JObject помощью вы можете прочитать значения полей

 var jObj = JObject.Parse(jsonString);
var result = Convert.ToDecimal(jObj["232"]["travelDistance"]);
 

или

 var result1 = Convert.ToDecimal(jObj.SelectToken("232.travelDistance"));
 

или

 var result2 = Convert.ToDecimal(jObj.SelectToken("*.travelDistance"));
 

или

 var result3 = jObj.SelectTokens("*.travelDistance")
                  .Select(x => Convert.ToDecimal(x))?
                  .FirstOrDefault();