[英]How to create a JSON stream of UTF8 bytes in C#
我正在嘗試為內部使用的 stream 的擴展方法編寫單元測試
return await JsonSerializer
.DeserializeAsync(@this, type, options ?? JsonFlatOptions)
.ConfigureAwait(false);
@this 將是我的 stream
我試過了
'''
var dog = new Dog() { Name = "Merlina" };
byte[] jsonUtf8Bytes = JsonSerializer.SerializeToUtf8Bytes(dog);
var json = JsonSerializer.Serialize(dog);
var stream = new MemoryStream();
stream.Write(jsonUtf8Bytes, 0, jsonUtf8Bytes.Length);
'''
但是當試圖反序列化它時,我收到以下錯誤消息:
消息:System.Text.Json.JsonException:輸入不包含任何 JSON 令牌。 當 isFinalBlock 為真時,預期輸入以有效的 JSON 令牌開始。 路徑:$ | 行號:0 | BytePositionInLine:0。----> System.Text.Json.JsonReaderException:輸入不包含任何 JSON 令牌。 當 isFinalBlock 為真時,預期輸入以有效的 JSON 令牌開始。 行號:0 | 字節位置內線:0。
我正在嘗試使用合適的 stream
文檔說此方法將 UTF8 字節的 JSON stream 反序列化為動態 object。
問題是您沒有將 stream 重置回開始。
你需要做
stream.Position = 0;
但老實說,最好將陣列本身用作 stream 的后備陣列,就像這樣
var stream = new MemoryStream(jsonUtf8Bytes);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.