/// <summary>
/// Parses the given JSON object to create a Protocol object
/// </summary>
/// <param name="jtok">JSON object</param>
/// <returns>Protocol object</returns>
private static Protocol Parse(JToken jtok)
{
string name = JsonHelper.GetRequiredString(jtok, "protocol");
string space = JsonHelper.GetOptionalString(jtok, "namespace");
string doc = JsonHelper.GetOptionalString(jtok, "doc");
var names = new SchemaNames();
JToken jtypes = jtok["types"];
var types = new List <Schema>();
if (jtypes is JArray)
{
foreach (JToken jtype in jtypes)
{
var schema = Schema.ParseJson(jtype, names, space);
types.Add(schema);
}
}
var messages = new Dictionary <string, Message>();
JToken jmessages = jtok["messages"];
if (null != jmessages)
{
foreach (JProperty jmessage in jmessages)
{
var message = Message.Parse(jmessage, names, space);
messages.Add(message.Name, message);
}
}
return(new Protocol(name, space, doc, types, messages));
}