自定义类型反序列化以'object'产生额外的大括号结果



我有这样的类:

class Document
{
    public string id {get;set;}
    public string name {get;set;}
}
var doc = new Document() { id= "1", name = "Doc1" };
var docs = new List<Document>() { doc };

我正在通过 HTTP 帖子将文档发送到我的后端服务。

在我的控制器中,我以列表文档的形式接收它。

这样做

的原因是,我想使用一个控制器来接受任何自定义类型。

问题是,列表文档中的每个项目都包装在额外的大括号中

"{{"id":"1", "name":"Doc1"}}"
  1. 如何防止额外的大括号?可以预防吗?
  2. 如果无法阻止,有没有办法额外删除额外的"{"和"}"的对象?

有一种叫做Newtonsoft.Json的东西。它有很多方法,如SerializeDeserialize对象。检查链接。特别是当您向 API 发送值时,API 应该接受与您发送相同的内容。如果要发送列表,则 API 应在其参数中接受相同的类列表。如果您正在从 API 接收某些结果/您正在使用 API,则应反序列化结果中收到的字符串。为此,您可以使用 -:

  • JObject,JToken
  • Newtonsoft.Json.JsonConvert.Deserialize

序列化文档列表的实际输出为:

[{"id":"1","name":"Doc1"}]

外部[]是一个数组,{id: number, name: string}中的每个对象都是您的文档。

    var doc = new Document { id = "1", name = "Doc1" };
    var docs = new List<Document> { doc };
    var result = Newtonsoft.Json.JsonConvert.SerializeObject(docs);
    Console.WriteLine(result);

最新更新