从 C# 中的特定级别反序列化

本文关键字:反序列化 | 更新日期: 2023-09-27 18:36:31

我从 Steam 检索有关特定游戏的信息。我提供了一个应用程序 url:http://store.steampowered.com/app/57690/并得到一个 JSON 响应,如下所示:

{
   "57690":{   // this is dynamically got from application id above ^
      "success":true
      "data": { }
   }
}

我有一个对象,SteamData

public bool success { get; set; }
public InternalData data { get; set; }

InternalData

public string name { get; set; }
public string about_the_game { get; set; }
public string supported_languages { get; set; }
...

我尝试使用以下方法将上面的 json 反序列化为 SteamData:

SteamData data = JsonConvert.DeserializeObject<SteamData>( thatJsonAbove );

它不起作用,因为存在一个根,它是一个应用程序 ID......

如何仅反序列化根目录中的内容(在本例中,"57690"中的内容)?

从 C# 中的特定级别反序列化

如果使用Newtonsoft JSON库,您可以尝试以下操作:

JObject gameInfo = JObject.Parse(json);
SteamData data= gameInfo.SelectToken("57690", false).ToObject<SteamData>();

由于您知道游戏的 ID - 因此可以轻松使用此方法。