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

JSON与XML序列化PivotSet类均返回空值,求解决办法

问题分析与解决方案

问题根源

你遇到的序列化空值问题,核心原因是你的PivotSet类中所有属性都被定义为Shared(VB.NET中的静态属性)。无论是XML序列化器还是Json.NET这类JSON序列化库,默认情况下只会序列化实例属性——也就是属于对象实例的成员,不会处理静态成员。当你序列化settings这个实例时,序列化器只会扫描属于该实例的非静态属性,静态属性的数据完全不会被读取和序列化,最终就得到了空的JSON对象和空的XML节点。

解决方案

把所有Shared修饰符从属性定义中移除,将它们改为普通的实例属性。这样序列化器就能正确识别并序列化这些属性的值了。

修改后的PivotSet类代码

Public Class PivotSet
    Public Property selectedlines As Boolean()
    Public Property selectedlabels As Boolean()
    Public Property linescolors As Integer()
    Public Property labelcolors As Integer()
    Public Property linethick As Boolean()
    Public Property labelbold As Boolean()
    Public Property pivotPeriod As String

    Public Sub New()
        selectedlines = {True, True, True, True, True, True, True}
        selectedlabels = {True, True, True, True, True, True, True}
        linescolors = {16711680, 255, 255, 255, 32768, 32768, 32768}
        labelcolors = {16711680, 255, 255, 255, 32768, 32768, 32768}
        linethick = {True, True, True, True, True, True, True}
        labelbold = {True, True, True, True, True, True, True}
        pivotPeriod = "Yearly"
    End Sub
End Class

验证序列化结果

修改后再运行你的序列化代码,JSON会输出包含所有属性和对应值的对象,XML也会生成包含各个属性节点的完整内容。比如JSON序列化结果会类似:

{
  "selectedlines": [true, true, true, true, true, true, true],
  "selectedlabels": [true, true, true, true, true, true, true],
  "linescolors": [16711680, 255, 255, 255, 32768, 32768, 32768],
  "labelcolors": [16711680, 255, 255, 255, 32768, 32768, 32768],
  "linethick": [true, true, true, true, true, true, true],
  "labelbold": [true, true, true, true, true, true, true],
  "pivotPeriod": "Yearly"
}

额外说明

如果你确实需要保留静态属性的功能,同时还要序列化它们,那需要手动处理:

  • 对于JSON序列化,可以使用Json.NET的[JsonProperty]特性标记静态属性,或者自定义转换器。
  • 对于XML序列化,需要实现IXmlSerializable接口,手动编写序列化逻辑来处理静态成员。但通常不建议这么做,因为静态属性属于类而非实例,序列化实例时包含静态数据可能会导致逻辑混淆,除非有特定的业务需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:06:01