Я пытаюсь создать модель данных в C # для объекта аргумента помощника Google (https://developers.google.com/actions/reference/rest/Shared.Types/Argument) Вот фрагмент документации, которую Google предоставляет по ссылке. Это формат объекта Json, который они публикуютв мой API.
{
"name": string,
"rawText": string,
"textValue": string,
"status": {
object(Status)
},
// Union field value can be only one of the following:
"intValue": string,
"floatValue": number,
"boolValue": boolean,
"datetimeValue": {
object(DateTime)
},
"placeValue": {
object(Location)
},
"extension": {
"@type": string,
field1: ...,
...
},
"structuredValue": {
object
}
// End of list of possible types for union field value.
}
Моя путаница возникает из-за того, что «// значение поля объединения может быть только одним из следующих:». Я не понимаю, как десериализовать объект в мою модель данных, если яне знаю, какой объект Google отправит мне.
Я попытался перечислить все возможные типы в моей модели
public class Argument
{
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("rawText")]
public string RawText { get; set; }
[JsonProperty("textValue")]
public string TextValue { get; set; }
[JsonProperty("status")]
public Status Status { get; set; }
[JsonProperty("intValue")]
public int IntValue { get; set; }
[JsonProperty("floatValue")]
public float FloatValue { get; set; }
[JsonProperty("boolValue")]
public bool BoolValue { get; set; }
[JsonProperty("datetimeValue")]
public GoogleDateTime DateTimeValue { get; set; }
[JsonProperty("placeValue")]
public Location PlaceValue { get; set; }
[JsonProperty("extensions")]
public KeyValuePair<string, string> Extensions { get; set; }
[JsonProperty("structuredValue")]
public JObject StructuredValue { get; set; }
}
Вот раздел аргументов Json Google:публикация в моем веб-интерфейсе API
"arguments": [
{
"name": "trigger_query",
"rawText": "what's happening today",
"textValue": "what's happening today"
},
{
"name": "DATEFIELD",
"rawText": "today",
"textValue": "today",
"dateValue": {
"year": 2018,
"month": 10,
"day": 23
}
}
]
Google должен присылать мне дату в данном конкретном случае использования. Когда я смотрю на необработанный Json выше, Google не отправляет дату в dateTimeValue, как в документации предполагает ее отправку.мне dateValue. Когда я добавляю свойство dateValue к моей модели, оно работает, но это не похоже на документацию. Это не похоже на правильный и чистый код дляиметь все различные типы значений, когда требуется только одно.Как лучше всего спроектировать модель данных