JSON导航

时间:2016-06-25 13:35:46

标签: c# json json.net

您好,我将使用NewstonSoft JSon.NET的JSON反序列化为字符串var,如下所示:

data = {"123456789": [{
"queue": "RANKED_SOLO_5x5",
"name": "Karthus's Captains",
"entries": [{
  "leaguePoints": 37,
  "isFreshBlood": false,
  "isHotStreak": false,
  "division": "I",
  "isInactive": false,
  "isVeteran": true,
  "losses": 124,
  "playerOrTeamName": "Nickname",
  "playerOrTeamId": "123456789",
  "wins": 136
}],
"tier": "SILVER"
}]}

我想知道如何访问联盟积分,例如“条目”内部。提前致谢

2 个答案:

答案 0 :(得分:0)

如果您不想将JSON反序列化为具体类(如this quite similar question中所述),您可以使用JSON.NET的JObject - 类,如下所示:

string jsonData = GetJsonStringFormSomewhere();
var jObject = (JObject)JsonConvert.DeserializeObject(jsonData);

var idOrWhatever = jObject["123456789"].First();
var firstEntry = idOrWhatever["entries"].First();
var leaguePoints = firstEntry["leaguePoints"].Value<int>();

答案 1 :(得分:0)

使用Newtonsoft可以采用不同的方法。没有序列化到整个对象的一种方法可能就是这样;

    JToken first = JObject.Parse(data);
    JArray res = (JArray)first.SelectToken("123456789");
    JToken entries = (JToken)JObject.Parse(res[0].ToString());
    JArray result = JArray.Parse(entries.SelectToken("entries").ToString());

    int leaguePoints = (int)result[0].SelectToken("leaguePoints");

我快速完成了这项工作并将其拆分为一行,这样你就可以看到每一步,但这意味着它不是很优雅,你当然可以连接它或使用linq来获取你的数据。