【问题标题】:return custom json response using strongly typed model使用强类型模型返回自定义 json 响应
【发布时间】:2021-11-15 09:28:04
【问题描述】:

我的响应模型类

public class MyModel
{
   public Tuple<string, string> Data{ get; set; }
}

var data = new MyModel
{
   Data = Tuple.Create("error", "12345");
};

导致以下 json 响应

 {
  "data": {
    "item1": "error",
    "item2": "12345"
  }
}

我想要的是创建如下响应

 "data" : [{ "error" : "12345" }] 

这些item1item2 当然是动态数据,它可以是任何字符串类型。我这样说是因为我不能简单地用JsonProperty 属性装饰属性。

【问题讨论】:

  • 它是一个元组有什么原因吗?似乎键值对数组会更好地为您服务。
  • @BenMatthews KeyValuePair 默认不会被序列化为需要的格式。
  • 我是否遗漏了一些棘手的部分。当所需的输出是别的东西时,为什么要使用元组。
  • @GuruStron 啊,你说得对。我的错。

标签: c# json .net-core


【解决方案1】:

您需要为您的元组实现自定义序列化程序或更改您的模型以表示所需的结构。如果您不想为您的内部数据创建某些特定类型,您可以利用Dictionary 序列化约定:

public class MyModel
{
   public Dictionary<string, string>[] Data{ get; set; }
}

和创造:

var data = new MyModel
{
    Data = new[]
    {
        new Dictionary<string, string> { { "error", "message" } }
    }
};

或者将你的字段变成对象数组并创建匿名对象:

public class MyModel
{
   public object[] Data{ get; set; }
}
var data = new MyModel
{
    Data = new[]
    {
        new { error = "message" } 
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-05
    • 2017-11-29
    • 1970-01-01
    • 2021-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-30
    相关资源
    最近更新 更多