Поскольку вам нужен только элемент «Данные» из json, использовать Newtonsoft довольно просто. Сначала создайте класс со всеми полями, которые содержит элемент Data, как показано ниже:
public class Data
{
public string Type { get; set; }
public string Name { get; set; }
public long Steam_AppId { get; set; }
public int Required_Age { get; set; }
public bool Is_Free { get; set; }
}
Теперь, чтобы отобразить ответ json, который, как я предполагаю, в данный момент хранится в строке , вы должны десериализовать его, чтобы сопоставить его с вашим C# классом. И вы можете сделать это очень легко:
Редактировать: более элегантное решение, которое устраняет все неудобства манипуляции со строками
//You already have this but I created it in order to test
string jsonResult = "{ \"72850\": " +
"{ \"success\": true, \"data\": " +
"{ \"type\": \"game\", \"name\": \"The Elder Scrolls V: Skyrim\", " +
"\"steam_appid\": 72850, \"required_age\": 0, \"is_free\": false } }";
//JObject is a class in Newtonsoft library for handling json objects
JObject jObject = JObject.Parse(jsonResult);
//Since you're sending a request to the api, either you already have the id
//"72850" or can extract it easily from uri. This line gets data's value
//by 1st searching for key = "72850" and then within that a key = "data"
JToken dataToken = jObject["72850"]["data"];
Data data = dataToken.ToObject<Data>();
Ссылка: https://www.newtonsoft.com/json/help/html/SerializingJSONFragments.htm
Старое решение
//getting the value portion of data element/key
string jsonData = "{" + jsonResult.Substring(jsonResult.IndexOf("\"type"));
//removing the extra } from the end
jsonData = jsonData.TrimEnd('}');
//map the json string to a C# object
var dataObj = JsonConvert.DeserializeObject<Data>(jsonData);
Итак, теперь вы увидите значения json, сопоставленные с вашим объектом данных, который в данном случае является dataObj. Не стесняйтесь задавать вопросы, если что-то не понятно. Ура!