将JSON字符串获取到对象中,然后获取密钥



我有一个api调用,它以json字符串的形式返回:

{
"packetId":0,
"responses":[
{
"data":{
"abTestingId":44,
"lastLogin":1661337984021,
"server_time":1661337984051,
"refundCount":0,
"timeZoneOffset":1.0,
"experiencePoints":0,
"maxBundleMsgs":10,
"createdAt":1660804158513,
"parentProfileId":null,
"emailAddress":null,
"experienceLevel":0,
"countryCode":null,
"vcClaimed":0,
"currency":{

},
"id":"8dd0a185-0ac5-42fa-9669-d55f7c6ad6a8",
"compressIfLarger":51200,
"amountSpent":0,
"previousLogin":1661337931133,
"playerName":"test1",
"pictureUrl":null,
"incoming_events":[

],
"sessionId":"cohhbvvcm7admtipiu1pcdgbek",
"languageCode":"en",
"vcPurchased":0,
"isTester":false,
"summaryFriendData":null,
"loginCount":37,
"emailVerified":true,
"xpCapped":false,
"profileId":"8dd0a185-0ac5-42fa-9669-d55f7c6ad6a8",
"newUser":"false",
"playerSessionExpiry":1200,
"sent_events":[

],
"maxKillCount":11,
"rewards":{
"rewardDetails":{

},
"currency":{

},
"rewards":{

}
},
"statistics":{

}
},
"status":200
}
]
}

现在,我正在将其转换为这样的对象:

object returnData = JsonConvert.DeserializeObject(response);

现在,我的问题是…我如何访问";奖励";对象

希望提前得到帮助和感谢:-(

JObject o = JsonConvert.DeserializeObject<JObject>(jsonresponse);
var responses = o.GetValue("responses").ToObject<List<JObject>>();
foreach (var r in responses){
Console.WriteLine(r.GetValue("data").ToObject<JObject>().GetValue("rewards"));
}

这是一种方法,如果你不想直接取消对POCO对象的api响应的序列化(由于像https://json2csharp.com/为您创建基于JSON对象的C#类(。

如果你只需要奖励,你可以在json解析后获得

var rewards = JObject.Parse(json)["responses"]
.Select(d => (JObject)d["data"]["rewards"]).ToList();
var rewardDetails = rewards[0]["rewardDetails"];

如果您需要更多的属性,也许将json反序列化为c类会更好。

你可以试试这个

var rewardsValue = returnData.GetValue("rewards");

这将给出钥匙的价值(奖励(。

最新更新