У меня следующий сценарий входящих сообщений от разных устройств в блок обработки, который должен обрабатывать сообщения в зависимости от типа сообщения.
Сообщения со следующим определением схемы для hobbies
, скажем schema-hobbies
JSchema hobbiesSchema = JSchema.Parse(@"{
'type': 'object',
'properties': {
'name': {'type':'string'},
'hobbies': {
'type': 'array',
'items': {'type':'string'}
}}}");
Сообщения со следующим определением схемы для countries
, скажем schema-countries
JSchema countriesSchema = JSchema.Parse(@"{
'type': 'object',
'properties': {
'name': {'type':'string'},
'countries': {
'type': 'array',
'items': {'type':'string'}
}}}");
Сообщения, которые не соответствуют ни одному из приведенных выше Schema
определений
Теперь я могу проверить hobbies
сообщения следующим образом
JObject hobbies = JObject.Parse(@"{
'name': 'James',
'hobbies': ['.NET', 'Blogging', 'Reading', 'Xbox', 'LOLCATS']
}");
IList<string> errorMessages;
bool valid = hobbies.IsValid(hobbiesSchema , out errorMessages);
Console.WriteLine(valid);
Я смогу объединить обе схемы и проверить разные входящие сообщения . Как я могу это сделать?
Например:
Если сообщение Json,
{
'name': 'James',
'hobbies': ['.NET', 'Blogging', 'Reading', 'Xbox', 'LOLCATS']
}
Выход должен быть: True
Если сообщение Json,
{
'name': 'James',
'countries': ['India', 'Australia']
}
Выход должен быть: True
Если сообщение Json,
{
'Time': '03:45 AM',
'heartbeats': ['30', '45']
}
Выход должен быть: False
Примечание:
- Пример схемы, использованной в этом вопросе, только для справки. Реальная схема очень сложна.