private static void UpdateData(string key, string value, StructedData data) { if (value == key) { return; } switch (key) { case "intent": data.Intent = value; break; case "dst_city": data.Destination = value; break; case "or_city": data.Origin = value; break; case "str_date": data.Date = value; break; case "n_adults": data.Adults = value; break; case "budget": data.Budget = value; break; } }
private static List <StructedData> ExtractFirstConversation(string path) { var file = File.ReadAllText(path); var json = JsonConvert.DeserializeObject <List <RootObject> >(file); var index = 0; var dataList = new List <StructedData>(); var none = "none"; foreach (var rootObject in json) { StructedData current = null; index++; foreach (var turns in rootObject.turns) { var data = new StructedData { Text = turns.text, User = turns.author, FrameNumber = turns.labels.active_frame.ToString(), ConversationId = rootObject.id }; if (current != null) { if (data.FrameNumber != current.FrameNumber) { data.FrameSwitched = true; } data.PrevAdults = string.IsNullOrEmpty(current.Adults) ? none : current.Adults; data.PrevBudget = string.IsNullOrEmpty(current.Budget) ? none : current.Budget; data.PrevDate = string.IsNullOrEmpty(current.Date) ? none : current.Date; data.PrevDestination = string.IsNullOrEmpty(current.Destination) ? none : current.Destination; data.PrevOrigin = string.IsNullOrEmpty(current.Origin) ? none : current.Origin; data.PrevIntent = string.IsNullOrEmpty(current.Intent) ? none : current.Intent; } else { data.PrevAdults = none; data.PrevBudget = none; data.PrevDate = none; data.PrevDestination = none; data.PrevOrigin = none; data.PrevIntent = none; } foreach (var turnsLabel in turns.labels.acts) { foreach (JToken turnsLabelArg in turnsLabel.args) { var children = turnsLabelArg.Children(); var first = (JProperty)children.First(); var value = first.Value.ToString(); var second = (JProperty)children.Last(); var key = second.Value.ToString(); UpdateData(key, value, data); } } dataList.Add(data); current = data; } } return(dataList); }