gab*_*ira 4 serialization json struct asp.net-core-3.0
当我将结构转换为 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;
}
Run Code Online (Sandbox Code Playgroud)
这是我的代码
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);
Run Code Online (Sandbox Code Playgroud)
它返回我空值,有帮助吗?
从 3.0 开始,ASP.NET Core 使用System.Text.Json来序列化/反序列化 json。并且公共属性默认是序列化的。请参阅官方文档:
序列化行为
默认情况下,所有公共属性都会被序列化。
要解决该问题,您可以将这些公共字段更改为公共属性,如下所示:
[可序列化]
结构项
{
公共 int A {get;set;}
公共字符串 B {get;set;}
公共 int C {get;set;}
公共小数 D {get;set;}
公共小数 E {get;set;}
}
或者作为替代方案,您可以按照官方文档使用Newtonsoft.Json包回退到旧行为:
[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;}
}
| 归档时间: |
|
| 查看次数: |
1788 次 |
| 最近记录: |