You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已将API返回JSON转为Object,如何访问其中的rewards对象

访问反序列化后的rewards对象的几种方法

因为你把JSON反序列化成了object类型,无法直接访问嵌套属性,推荐以下几种方式来获取rewards对象:

方法一:使用dynamic类型(快速便捷)

将反序列化结果改为dynamic类型,直接通过链式调用访问嵌套属性:

dynamic returnData = JsonConvert.DeserializeObject(response);
// responses是数组,取第一个元素后逐层访问到rewards
var rewards = returnData.responses[0].data.rewards;

这种方式无需定义模型类,适合快速调试或临时场景,但编译时没有类型检查。

方法二:使用JObject解析(灵活可控)

用JObject解析JSON,通过键名访问嵌套结构:

JObject returnData = JsonConvert.DeserializeObject<JObject>(response);
// 按层级索引或键名获取rewards
var rewards = returnData["responses"][0]["data"]["rewards"];

// 如果需要将rewards转成具体对象,可自定义类后用ToObject<T>:
// var rewardsObj = rewards.ToObject<YourRewardsClass>();

这种方式适合JSON结构不固定的场景,能灵活处理不同层级的属性。

方法三:定义强类型模型类(类型安全,推荐长期项目)

根据JSON结构创建对应实体类,通过强类型反序列化访问属性,获得编译时类型检查:
先定义模型类(仅保留关键层级,其他属性可按需添加):

public class RootModel
{
    public int packetId { get; set; }
    public List<ResponseModel> responses { get; set; }
}

public class ResponseModel
{
    public DataModel data { get; set; }
    public int status { get; set; }
}

public class DataModel
{
    public RewardsModel rewards { get; set; }
    // 其他属性如playerName、lastLogin等可按需添加
}

public class RewardsModel
{
    public object rewardDetails { get; set; }
    public object currency { get; set; }
    public object rewards { get; set; }
    // 可根据实际数据结构修改属性类型
}

然后反序列化并访问:

RootModel returnData = JsonConvert.DeserializeObject<RootModel>(response);
var rewards = returnData.responses[0].data.rewards;

这种方式适合长期维护的项目,能避免类型错误,代码可读性更高。

内容的提问来源于stack exchange,提问作者Mansa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 19:09:28