我在我的客户端 Web 应用程序上使用 js-scrypt ( https://github.com/tonyg/js-scrypt ) 对密码进行哈希处理和加盐处理,然后再将它们发布到我的服务器端 .NET MVC 应用程序以再次进行哈希处理和加盐处理。这个 JavaScript 库将字节数组实现为 JavaScript Uint8Arrays。如何让我的 MVC Controller 将我的 JSON Uint8Array 反序列化为 byte[]?
JavaScript 示例:(AJAX.Post 是我编写的库,myUint8Array 正确序列化)
AJAX.Post('www.example.com/SendByteArray', { myByteArray: myUint8Array }, Callback);
C# 示例:(在我的默认 Controller 中)
[HttpPost]
public async Task<JsonResult> SendByteArray(byte[] myByteArray) {
}
在此示例中,myByteArray 始终为空。我尝试了几种不同的方法,基于转换为字符串然后返回 byte[] 但我无法获得正确的值。如果我能以某种方式直接将代码实现到 .NET 的 JSON 反序列化器中,以便上面的代码完全按原样工作,那将是非常可取的,因为我还有一些其他项目,如果我可以直接在它们之间传递字节数组,我可以做一些很酷的事情服务器端和客户端应用程序。
最佳答案
目前我唯一可以开始工作的方法是对 Uint8Array 进行 base64 编码,在 C# 中将其捕获为字符串,然后将该字符串转换为 byte[]。
JavaScript:
AJAX.Post('www.example.com/SendByteArray', { strByteArray: btoa(String.fromCharCode.apply(null, myUint8Array)) }, Callback);
C#:
[HttpPost]
public async Task<JsonResult> SendByteArray(string strByteArray) {
byte[] myByteArray = Convert.FromBase64String(strByteArray);
}
关于javascript - .NET MVC 从 JSON Uint8Array 反序列化字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17845032/