我在我的客户端Web应用程序上使用js-scrypt(https://github.com/tonyg/js-scrypt)将哈希和盐密码发布到我的服务器端.NET MVC应用程序进行散列,再次腌制。这个JavaScript库实现字节数组为JavaScript Uint8Arrays。如何让我的MVC控制器将我的JSON Uint8Array反序列化为一个字节[]?.NET MVC反序列化来自JSON的字节数组Unt8Array
JavaScript示例:(AJAX.Post是我写的一个图书馆,myUint8Array正确序列化)
AJAX.Post('www.example.com/SendByteArray', { myByteArray: myUint8Array }, Callback);
C#示例:(在我的默认控制器)
[HttpPost]
public async Task<JsonResult> SendByteArray(byte[] myByteArray) {
}
在这个例子中myByteArray总是空值。我尝试了几种基于转换为字符串,然后返回字节[]的不同方法,但是我无法获得正确的值。如果我能以某种方式将代码直接实现到.NET的JSON反序列化器中,以便上面的代码完全按照原样工作,这将是非常受欢迎的,因为我有一些其他项目,如果可以直接在字符串之间传递字节数组,服务器端和客户端应用程序。
int []仍然没有选择它,它仍然为空。我认为问题在于Uint8Array不会序列化为实际的JSON数组,它会在其他几个属性中序列化为具有属性{0:168,1:49,...}的对象。 – user1084447
这很有趣 - 没有意识到将一个'Uint8Array'序列化为一个常规对象而不是一个直线阵列。看起来好像你是否可以通过调用'myUnit8Array.subarray()'将'Uint8Array'转换成一个常规数组,这应该给你一个字节,然后你可以将这些字节写入'int []'参数。可能值得将它与你的base-64解决方案进行比较,看看哪一个可以提供更小的占位面积。 –
myUnit8Array.subarray()仍然会产生相同的奇怪对象{0:168,1:49,...} – blaster