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

VB.NET接收含斜杠键名的POST JSON数据问题

嗨,这个问题我碰到过好多次了——核心就是让JSON序列化器把带特殊字符的键名和你类里合法的属性名做映射,完全不用修改原始JSON的结构,给你两种最常用的解决方案:

方案1:使用Newtonsoft.Json(Json.NET,多数.NET项目常用的第三方库)

你只需要给Testing类里对应的属性加上JsonProperty特性,指定它对应的JSON键名即可,属性名改成合法的名称(比如ItemID):

Imports Newtonsoft.Json

Public Class Testing
    Public Property _notes As String
    Public Property _received As Boolean
    ' 用特性指定JSON中的键名
    <JsonProperty("item/id")>
    Public Property ItemID As String
End Class

这样你的Post方法完全不用修改,当请求进来时,Json.NET会自动把JSON里的item/id值映射到ItemID属性上。

方案2:使用System.Text.Json(.NET Core/.NET 5+内置的序列化库)

如果你的项目用的是.NET Core或更高版本,推荐用内置的System.Text.Json,对应的特性是JsonPropertyName:

Imports System.Text.Json.Serialization

Public Class Testing
    Public Property _notes As String
    Public Property _received As Boolean
    ' 指定JSON键名
    <JsonPropertyName("item/id")>
    Public Property ItemID As String
End Class
兼容老版本.NET Framework(可选)

如果是老的.NET Framework项目,用DataContractJsonSerializer的话,可以用DataMember特性来指定映射:

Imports System.Runtime.Serialization

<DataContract>
Public Class Testing
    <DataMember(Name:="_notes")>
    Public Property _notes As String
    <DataMember(Name:="_received")>
    Public Property _received As Boolean
    <DataMember(Name:="item/id")>
    Public Property ItemID As String
End Class

不管用哪种方案,本质都是通过序列化特性告诉序列化器:“JSON里的这个键,对应我类里的这个属性”,完美解决变量名不能包含斜杠的问题,又不用改动你无法控制的JSON结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:29:54