我有下面的数据结构,我想从控制器返回结果:
public class DataModel
{
public string Id { get; private set; }
public string Name { get; private set; }
public string Description { get; private set; }
public string ProjectId { get; private set; }
public string Content { get; private set; }
public DateTime CreationTime { get; private set; }
public DateTime? LastModificationTime { get; private set; }
}
我在斯瓦格得到的是:
{
"id": "642af19d6d5bb761f5a62cc0",
"name": "Test submission 8",
"description": "test description",
"projectId": "1a1b1c",
"content": "{ \"Name\" : \"Test 1\", \"Id\" : \"id1\", \"Value\" : 1 }",
"creationTime": "2023-04-03T15:32:45Z",
"lastModificationTime": null
}
我想得到的是:
{
"id": "642af19d6d5bb761f5a62cc0",
"name": "Test submission 8",
"description": "test description",
"projectId": "1a1b1c",
"content": {
"Name": "Test 1",
"Id": "id1",
"Value": 1
},
"creationTime": "2023-04-03T15:32:45Z",
"lastModificationTime": null
}
内容是一个JSON字符串。我不能创建一个特定类型的类并将JSON反序列化为那个类,因为字符串的结构可以变化。
如何修改Content的对象和类型,使Content看起来像控制器返回的JSON中的子对象?
1条答案
按热度按时间tzdcorbm1#
你需要返回一些能够被正确序列化的对象。例如,你可以使用C# 6中引入的
JsonNode
API:另一种选择是使用custom converter创建一个特殊的 Package 器,它将按原样写入字符串(尽管在这种情况下,您需要在转换器中验证字符串,或者您可能会得到无效的JSON)。