gpt4 book ai didi

JsonSerializer 结构与 asp-net 核心 3.0

转载 作者:行者123 更新时间:2023-12-04 01:36:43 24 4
gpt4 key购买 nike

当我将结构转换为 json 时,我遇到了 .net core 3.0 的问题。 (当我使用 .net core 2.2 时没有问题)

这是我的结构

[Serializable]
struct Item
{
public int A;
public string B;
public int C;
public decimal D;
public decimal E;
}

这是我的代码
var linhas = COD_PRODUTO.Count;
Item[] item = new Item[linhas];

for (int cont = 0; cont < linhas; cont++)
{
DESCRICAO = _context.Produtos.Where(c => c.COD_PRODUTO == COD_PRODUTO[cont]).Select(c =>
c.DESCRICAO).Single().ToString();

item[cont].A = COD_PRODUTO[cont];
item[cont].B = DESCRICAO;
item[cont].C = QUANTIDADE[cont];
item[cont].D = PRECOUNITARIO[cont];
item[cont].E = TOTAL[cont];
}

var json = JsonSerializer.Serialize(item); //3.0
Debug.WriteLine("----------------------" + json);

return new JsonResult(json);


它返回给我空值,有什么帮助吗?

最佳答案

从 3.0 开始,ASP.NET Core 使用 System.Text.Json序列化/反序列化 json。并且公共(public)属性默认是序列化的。见 official docs :

Serialization behavior

By default, all public properties are serialized.


  • 要解决该问题,您可以 更改那些公众字段 公开房产 如下:
    [Serializable]struct Item{    public int A {get;set;}    public string B {get;set;}    public int C {get;set;}    public decimal D {get;set;}    public decimal E {get;set;}}
  • Or as an alternative, you can follow the official docs to fallback to the old behavior by using the Newtonsoft.Json package:

    services.AddControllers()
    .AddNewtonsoftJson(opts =>{ /*...*/ });
  • 关于JsonSerializer 结构与 asp-net 核心 3.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59242149/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com