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

ASP.NET中JSON字符串反序列化及提取指定字段至变量求助

嘿,作为JSON新手不用慌,在ASP.NET里提取这几个指定字段其实挺简单的!我给你两种常用的实现方式,你可以根据自己项目的情况来选:

方法一:使用ASP.NET Core默认的System.Text.Json(推荐)

这是.NET Core 3.0之后官方内置的JSON处理库,不需要额外安装包,用起来很方便。

步骤1:定义匹配JSON结构的强类型类(推荐)

为了更安全、易维护,最好定义一个只包含你需要字段的类。如果JSON里的字段是下划线命名(比如message_id),记得用JsonPropertyName特性映射到C#的帕斯卡命名属性:

using System.Text.Json.Serialization;

public class MessageData
{
    [JsonPropertyName("message_id")]
    public string MessageId { get; set; }

    [JsonPropertyName("sent_text")]
    public string SentText { get; set; }

    [JsonPropertyName("parts_count")]
    public int PartsCount { get; set; }
}

步骤2:反序列化JSON并提取字段

把你的JSON字符串反序列化成上面的类实例,然后直接提取属性值到变量里:

// 假设你的原始JSON字符串存在这个变量里
string jsonString = "{\"message_id\":\"MSG_001\",\"sent_text\":\"这是测试消息\",\"parts_count\":3}";

// 反序列化JSON到类实例
MessageData message = JsonSerializer.Deserialize<MessageData>(jsonString);

// 提取到单独变量,准备存入数据库
string messageId = message.MessageId;
string sentText = message.SentText;
int partsCount = message.PartsCount;

偷懒选项:用动态类型(不推荐大型项目)

如果不想定义类,也可以用dynamic类型直接读取字段,但这样没有编译时检查,容易出错:

dynamic message = JsonSerializer.Deserialize<dynamic>(jsonString);
string messageId = message.message_id;
string sentText = message.sent_text;
int partsCount = message.parts_count;
方法二:使用Newtonsoft.Json(Json.NET)

如果你的项目还在使用旧版本.NET Framework,或者已经引入了Json.NET库,可以用这种方式:

步骤1:定义类(同样支持字段映射)

用JsonProperty特性来映射JSON字段和C#属性:

using Newtonsoft.Json;

public class MessageData
{
    [JsonProperty("message_id")]
    public string MessageId { get; set; }

    [JsonProperty("sent_text")]
    public string SentText { get; set; }

    [JsonProperty("parts_count")]
    public int PartsCount { get; set; }
}

步骤2:反序列化并提取字段

使用JsonConvert.DeserializeObject方法来处理:

string jsonString = "{\"message_id\":\"MSG_001\",\"sent_text\":\"这是测试消息\",\"parts_count\":3}";
MessageData message = JsonConvert.DeserializeObject<MessageData>(jsonString);

// 提取变量
string messageId = message.MessageId;
string sentText = message.SentText;
int partsCount = message.PartsCount;

一些新手注意点

  • 确保你的JSON字符串格式是有效的(比如引号配对、逗号正确),否则反序列化会抛出异常,建议加try-catch块处理错误
  • 如果JSON里的字段可能为null,可以把C#属性改成可空类型,比如string? MessageId或者int? PartsCount
  • 存入数据库时,直接把这些变量对应到数据库表的字段即可,比如用EF Core的话,赋值给实体类的属性然后保存

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:09:05