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

在.NET Core中无需匹配返回JSON所有字段如何基于Web API调用创建模型

解决方案:在.NET中仅提取JSON指定字段反序列化

.NET的主流JSON序列化库默认都支持忽略模型中未定义的额外字段,你只需要定义仅包含所需字段的模型即可,无需匹配JSON的所有参数。

1. 定义目标字段模型

首先创建只包含Name和Nickname两个字段的类:

public class TargetModel
{
    public string Name { get; set; }
    public string Nickname { get; set; }
}

2. 使用内置System.Text.Json反序列化(.NET Core 3.0+ / .NET 5+适用)

该库默认自动忽略JSON中存在但模型未定义的属性,直接调用反序列化方法即可:

using System.Text.Json;

// jsonStr为你获取的未知结构JSON字符串
var result = JsonSerializer.Deserialize<TargetModel>(jsonStr);

// 可直接读取两个字段的值
Console.WriteLine($"Name:{result.Name},Nickname:{result.Nickname}");

如果需要兼容JSON字段名大小写差异,可添加配置:

var options = new JsonSerializerOptions
{
    PropertyNameCaseInsensitive = true
};
var result = JsonSerializer.Deserialize<TargetModel>(jsonStr, options);

3. 使用Newtonsoft.Json(Json.NET)反序列化

该库同样默认忽略多余字段,使用方式如下:

using Newtonsoft.Json;

var result = JsonConvert.DeserializeObject<TargetModel>(jsonStr);

如需显式配置忽略未定义字段的规则,可添加序列化设置:

var settings = new JsonSerializerSettings
{
    MissingMemberHandling = MissingMemberHandling.Ignore
};
var result = JsonConvert.DeserializeObject<TargetModel>(jsonStr, settings);

如果你不想定义强类型模型,也可以直接解析JSON节点取值:

  • System.Text.Json版本:
var jsonDoc = JsonDocument.Parse(jsonStr);
string name = jsonDoc.RootElement.GetProperty("Name").GetString();
string nickname = jsonDoc.RootElement.GetProperty("Nickname").GetString();
  • Newtonsoft.Json版本:
var jObj = JObject.Parse(jsonStr);
string name = jObj["Name"].ToString();
string nickname = jObj["Nickname"].ToString();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 13:39:02