【发布时间】:2022-09-24 03:16:35
【问题描述】:
我尝试创建一个 Rest API C# 端点,以便他们可以将 JSON 发布到该端点并对其进行处理。这是他们将发布到我的端点的示例 JSON,如下所示:
{
\"Guid\": \"abc123\",
\"ID\": \"68AA101C-111-888-9CC1-1265\",
\"Name\": \"test\",
\"formData\": [
{
\"FieldGuid\": \"454545454545\",
\"FieldType\": \"a\",
\"Label\": \"First name\",
\"Value\": \"Sam\"
},
{
\"FieldGuid\": \"121212121254545\",
\"FieldType\": \"a\",
\"Label\": \"Last name\",
\"Value\": \"DummyData\"
},
{
\"FieldGuid\": \"787878787854545\",
\"FieldType\": \"b\",
\"Label\": \"Date of Birth\",
\"Value\": \"1999-01-01T16:05:00.000Z\"
},
{
\"FieldGuid\": \"2323212121545\",
\"FieldType\": \"c\",
\"Label\": \"Gender\",
\"Value\": \"Male\"
},
......
] }
如您所见,\"formData\" 有很多属性(就像 40 个)。将“formData”添加到我的模型的最佳方法是什么?
到目前为止,这是我的模型:
public class Data
{
}
public class FormData
{
public string FieldGuid { get; set; }
public string FieldType { get; set; }
public string Label { get; set; }
public object Value { get; set; }
}
public class Root
{
public string Guid { get; set; }
public string ID { get; set; }
public string Name { get; set; }
public Data Data { get; set; }
public List<FormData > formData { get; set; }
}
这是我的 API 端点:
[HttpPost(\"CreateOT\")]
public OPIEPatientDto CreateOT([FromBody] OTDto dto)
{
SaveDto saveDto = new SaveDto();
foreach (var item in dto.FormData)
{
switch (item.Label)
{
case \"First name\":
saveDto.genericData.FirstName = item.Value.ToString();
break;
case \"Last name\":
savePatientCommandDto.genericData.LastName = item.Value.ToString();
break;
case \"Date of Birth\":
savePatientCommandDto.genericData.DateOfBirth = Convert.ToDateTime(item.Value);
break;
}
}
...
}
即使这个模型和使用 foreach 循环也可以吗?并且如果不是大小写\“名字\”:我想使用枚举,我该怎么办?
我创建了一个枚举,如:
public enum FormDataEnum
{
Firstname = 0,
Lastname = 1,
DateofBirth = 2,
Gender = 3,
......
但是当我想这样使用时:
switch (item.Label)
{
case FormDataEnum.Firstname.ToString():
不认识名字。我知道我们在 C# 中没有枚举作为字符串,我可以使用 struct 或 const,我该如何使用枚举?
-
您是否尝试过使用枚举作为标签的类型?
public FormDataEnum Label { get; set; } -
是的,这是正确的方法,如下面的答案中所述。点赞