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

Blazored Server LocalStorage仅支持对象属性而非字段?求原因解析

字段与属性在Blazored LocalStorage中的差异原因

核心问题出在JSON序列化的默认规则上——Blazored LocalStorage依赖的System.Text.Json(默认序列化库)只会处理公共属性,对字段视而不见。

具体逻辑:

  • 用带{ get; set; }的属性时,这是标准的C#公共属性,序列化器会自动识别:存入LocalStorage时把Message的值打包进JSON,读取时再把JSON里的对应值还原到属性上,整个流程正常。
  • 改成公共字段后:
    1. 存入时,序列化器不会把Message字段的内容写入JSON,导致LocalStorage里的对象根本没有Message的数据;
    2. 读取时,JSON里找不到Message相关内容,反序列化出来的StatusData对象的Message只能保持默认的空字符串,看起来像是读取失败,本质是存入阶段就没把数据存进去。

验证方式:

打开浏览器F12的Application标签,找到LocalStorage里的站点存储项,对比两种写法的JSON内容:用字段时,JSON里完全没有Message这个键值对。

非要用字段的解决办法:

给字段加上[JsonPropertyName]特性,强制序列化器处理它:

using System.Text.Json.Serialization;

public class StatusData 
{ 
    [JsonPropertyName("Message")]
    public string Message = string.Empty; 
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 20:35:15