private static Protocol Parse(JToken j)
{
string protocol = JsonHelper.GetRequiredString(j, "protocol");
string snamespace = JsonHelper.GetRequiredString(j, "namespace");
string doc = JsonHelper.GetOptionalString(j, "doc");
Names names = new Names();
JToken jtypes = j["types"];
List<Schema> types = new List<Schema>();
if (jtypes is JArray)
{
foreach (JToken jtype in jtypes)
{
Schema schema = Schema.ParseJson(jtype, names);
types.Add(schema);
}
}
JToken jmessages = j["messages"];
List<Message> messages = new List<Message>();
foreach (JProperty jmessage in jmessages)
{
Message message = Message.Parse(jmessage, names);
messages.Add(message);
}
return new Protocol(protocol, snamespace, doc, types, messages);
}