【问题标题】:How to convert a Byte array to list of object c#?如何将字节数组转换为对象 c# 列表?
【发布时间】:2021-03-02 08:40:48
【问题描述】:

我有一个字节数组,需要将其转换为对象列表。 说字节数组有这个

[{name:'ABC',DOB:'01-01-2020'},{name:'XYZ',DOB:'01-03-2020'}]

我有课

public class sample{
public string name {get; set;}
public DateTime DOB {get; set;}
}

我需要从字节数组中获取数据作为类样本List<Sample> 的列表 我怎样才能做到这一点?

【问题讨论】:

  • 我在这里看不到字节数组,更像是一些损坏的 json。你是说文本[{name:'ABC',DOB:'01-01-2020'},{name:'XYZ',DOB:'01-03-2020'}] 实际上是一个文本表示的字节数组,只是为了这个例子?或者你对字节数组到底是什么感到困惑
  • 字节数组来自 API 调用。当 API 调用通过浏览器完成时,这是我得到的 JSON。作为示例添加。
  • 这能回答你的问题吗? How to convert byte array to any type
  • 显示你如何调用 webapi... 至少,如果你使用 HttpClient,这可能是一个简单的修复
  • API 调用是一个 URL - baseURL/api/controller/parameter1/parameter2 它返回一个 ByteSyncArray

标签: c# .net byte


【解决方案1】:

您可以使用此代码

List<Sample> sampleList = JsonConverter.DeserializeObject<List<Sample>>(json)

【讨论】:

    【解决方案2】:

    读取流,将流传递给 Text.Json DeserializeAsync 以获得最小分配的生活方式。

    using var response = await client
       .GetAsync(new Uri("blahblahblahy"));
    
    response.EnsureSuccessStatusCode();
    
    await using var contentStream = await response
       .Content
       .ReadAsStreamAsync();
    
    var result = await JsonSerializer.
       DeserializeAsync<Sample>(contentStream);
    

    注意:技术上(在大多数情况下)你不需要在这里使用 using 语句,但是在某些情况下你会这样做,所以我的建议就是这样做子>

    【讨论】:

    • 谢谢。如果我要获取一个 JSON 字符串作为输入,那么我可以使用相同的逻辑来获取 List 吗?
    猜你喜欢
    • 2017-01-27
    • 2021-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-08
    • 1970-01-01
    相关资源
    最近更新 更多