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

如何将含空格键名的JSON字符串反序列化为.NET对象?

解决JSON转.NET对象的键名匹配问题

你的问题核心是JSON键名包含空格,而C#类属性名无法直接使用带空格的命名,因此需要通过特性映射关联JSON键与类属性。以下是两种.NET常用JSON序列化库的解决方案:

方案1:使用System.Text.Json(.NET Core 3.0+ 内置)

先定义对应实体类,通过JsonPropertyName特性指定JSON中的键名:

using System.Text.Json.Serialization;

public class Movie
{
    [JsonPropertyName("movie title")]
    public string MovieTitle { get; set; }

    [JsonPropertyName("release date")]
    public DateTime ReleaseDate { get; set; }

    [JsonPropertyName("movie rating")]
    public double MovieRating { get; set; }

    [JsonPropertyName("main actor")]
    public MainActor MainActor { get; set; }

    public bool Seen { get; set; }
}

public class MainActor
{
    public string Name { get; set; }
    public int Age { get; set; }
    public string Gender { get; set; }
}

执行反序列化操作:

using System.Text.Json;

string jsonString = "你的JSON字符串内容";
List<Movie> movies = JsonSerializer.Deserialize<List<Movie>>(jsonString);

方案2:使用Newtonsoft.Json(Json.NET,第三方库)

若项目使用Newtonsoft.Json,用JsonProperty特性完成映射:

using Newtonsoft.Json;

public class Movie
{
    [JsonProperty("movie title")]
    public string MovieTitle { get; set; }

    [JsonProperty("release date")]
    public DateTime ReleaseDate { get; set; }

    [JsonProperty("movie rating")]
    public double MovieRating { get; set; }

    [JsonProperty("main actor")]
    public MainActor MainActor { get; set; }

    public bool Seen { get; set; }
}

public class MainActor
{
    public string Name { get; set; }
    public int Age { get; set; }
    public string Gender { get; set; }
}

反序列化代码:

using Newtonsoft.Json;

string jsonString = "你的JSON字符串内容";
List<Movie> movies = JsonConvert.DeserializeObject<List<Movie>>(jsonString);

注意事项

  • System.Text.Json是.NET Core 3.0+内置组件,无需额外安装;Newtonsoft.Json需通过NuGet安装Newtonsoft.Json包。
  • JSON中的日期格式"1999-03-31"可自动匹配C#的DateTime类型。
  • JSON中的浮点数可直接映射到C#的double类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 10:12:17