我有在 ASP.NET Core 服务器和 Javascript 之间发送的这些数据结构。数据以使用 websocket 消息序列化的 JSON 格式发送。
在此示例中,对象具有名称为Text
(Uppercase T
)的参数
Server(C# object) --> System.Text...JsonSerialize --> WebSocket --> JSON.parse --> JS object
最终的 JS 对象:
{
"Text": "Hello"
}
在引入 Blazor WebAssembly 之后,它使用 ClientWebSocket 直接与服务器对话
Server(C# object) --> System.Text...Serialize --> WebSocket --> System.Text...Deserialize --> C# object
问题,我的问题来自 JSInterop。
Blazor --> JSInterop --> JavaScript
最终的 JS 对象:
{
"text": "Hello"
}
现在该Text
属性的名称text
全部为小写。
如何配置对象序列化以保留 C# 对象的大小写?
解决方法
当前的解决方法是在通过 JSInterop 传递对象之前对其进行序列化,然后运行 JSON.parse 以取回对象。
C#
var jsonString = JsonSerializer.Serialize(arg)
JSRuntime.InvokeVoidAsync("MyFunction", jsonString);
JavaScript
window.MyFunction = function (jsonString) {
var arg = JSON.parse(jsonString)
....
}