自定义类型反序列化为“对象”会产生额外的大括号

时间:2018-01-17 11:08:04

标签: c# json json.net

我有一个这样的课程:

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. 如果无法阻止,是否有办法额外删除额外的“{”和“}”?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

[{"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);