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

C#中如何更新对象内嵌套Data属性下的UserPhoneNumber属性值

实现嵌套属性更新的方案

以下分3种常用开发场景给出对应实现方式:

场景1:使用强类型模型映射JSON(最推荐)

首先定义和JSON结构匹配的C#类:

public class UserData
{
    public string UserPhoneNumber { get; set; }
    public string UserProfileName { get; set; }
}

public class GeneralSetting
{
    public string Name { get; set; }
    public string SNo { get; set; }
    public UserData Data { get; set; }
}

将JSON反序列化为强类型对象后,直接修改嵌套属性即可:

// 假设generalSettingResponse是已经反序列化后的GeneralSetting对象
generalSettingResponse.Data.UserPhoneNumber = "要更新的新手机号";

这种方式类型安全,不需要额外处理键匹配逻辑,调试成本最低。

场景2:使用JObject/动态JSON节点处理(无需定义类)

如果你是用Newtonsoft.Json的JObject直接操作JSON结构,只需要先拿到Data节点再修改子属性即可:

// 假设generalSettingResponse是JObject类型的对象
var dataNode = generalSettingResponse["Data"] as JObject;
if (dataNode != null)
{
    dataNode["UserPhoneNumber"] = "要更新的新手机号";
}

如果需要适配你现有settingsList的键匹配逻辑,可以扩展为:

var updateProfile = generalSettingResponse.Properties().Select(x => 
{
    // 处理顶层属性
    if (settingsList.ContainsKey(x.Name.ToLower()))
    {
        return new JProperty(x.Name, settingsList[x.Name.ToLower()]);
    }
    // 处理Data下的嵌套属性
    if (x.Name == "Data" && x.Value is JObject dataNode)
    {
        foreach (var dataProp in dataNode.Properties())
        {
            if (settingsList.ContainsKey(dataProp.Name.ToLower()))
            {
                dataProp.Value = settingsList[dataProp.Name.ToLower()];
            }
        }
    }
    return x;
});

场景3:嵌套字典结构处理

如果你的对象是Dictionary<string, object>类型的嵌套结构,处理逻辑如下:

if (generalSettingResponse.TryGetValue("Data", out var dataObj) 
    && dataObj is Dictionary<string, object> dataDict)
{
    // 直接修改指定嵌套属性
    dataDict["UserPhoneNumber"] = "要更新的新手机号";
    
    // 适配settingsList匹配逻辑的写法
    foreach (var key in settingsList.Keys)
    {
        if (dataDict.ContainsKey(key))
        {
            dataDict[key] = settingsList[key];
        }
    }
}

你原有的代码只处理了顶层的键值对,没有进入嵌套的Data属性对应的子结构做匹配,所以无法修改嵌套属性。只需要在遍历顶层属性时,增加对Data子结构的遍历逻辑即可实现需求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 12:06:02