簡體   English   中英

如何在 C# 中創建 UTF8 字節的 JSON stream

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM