我试图为我的API决定最佳的响应格式。我需要返回一个报告响应,该响应提供有关报告本身及其中包含的字段的信息。字段可以是不同的类型,因此可以有:SelectList;文本区;位置等..
它们各自使用不同的属性,因此" SelectList"可能会使用"价值"存储其字符串值和"位置"可能会使用" ChildItems"持有"经度" "纬度"等
这就是我的意思:
"ReportList": [
{
"Fields": [
{
"Id": {},
"Label": "",
"Value": "",
"FieldType": "",
"FieldBankFieldId": {},
"ChildItems": [
{
"Item": "",
"Value": ""
}
]
}
]
}
这个问题是我希望用户知道什么时候该值应为null。因此,我期待一个人希望从"位置"中提取价值。从" ChildItems"中提取它而不是"价值"。然而,对此的好处是查询事物要比下面的替代方案容易得多:
"ReportList": [
{
"Fields": [
{
"SelectList": [
{
"Id": {},
"Label": "",
"Value": "",
}
]
"Location": [
{
"Id": {},
"Label": "",
"Latitude": "",
"Longitude": "",
"etc": "",
}
]
}
]
}
所以这个是一个报告列表,其中包含一个字段列表,其中包含我拥有的每种字段类型的字段类型列表(15或类似的东西)。这与仅包含报告列表相反,报告列表包含具有"字段类型"的字段列表。我认为enum很容易操纵。
所以问题:哪种格式最适合回复?任何替代和评论都赞赏。
编辑:
要按报告中的fieldtype查询所有字段,并使用第一种方式获取值,它会是这样的:
foreach(field in fields)
{
switch(field.fieldType){
case FieldType.Location :
var locationValue = field.childitems;
break;
case FieldType.SelectList:
var valueselectlist = field.Value;
break;
}
第二个就像:
foreach(field in fields)
{
foreach(location in field.Locations)
{
var latitude = location.Latitude;
}
foreach(selectList in field.SelectLists)
{
var value= selectList.Value;
}
}
我认为正确答案是第一个。用switch语句。它可以更容易地查询以下内容:使用此guid的id获取字段的值。它只是意味着通过一个大的转换声明。
答案 0 :(得分:0)
我选择了第一个,因为查询最常见的用例更容易。我希望客户端代码可以在需要更改时将其置于自己的架构中。