public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { Dictionary<string, object> wholeDict = serializer.Deserialize<Dictionary<string, object>>(reader); Dictionary<string, object> facetDict = JsonConvert.DeserializeObject<Dictionary<string, object>>(wholeDict.First().Value.ToString()); Dictionary<string, object> termDict = JsonConvert.DeserializeObject<Dictionary<string, object>>(facetDict.GetString(FacetTypeEnum.TermsStatistics.ToString())); string facetName = wholeDict.First().Key; string keyField = termDict.GetString(_KEY_FIELD); string valueField = termDict.GetStringOrDefault(_VALUE_FIELD); TermsStatisticsFacet facet = null; if (!string.IsNullOrWhiteSpace(valueField)) { facet = new TermsStatisticsFacet(facetName, keyField, valueField); } else { facet = new TermsStatisticsFacet(facetName, keyField, termDict.DeserializeObject<Script>(new Dictionary<string,string>(){ {_VALUE_SCRIPT, Script.SCRIPT} })); } FacetSerializer.DeserializeFacetInfo(facet, termDict); facet.ShardSize = termDict.GetInt32(_SHARD_SIZE, facet.Size); OrderOptionEnum order = OrderOptionEnum.Count; facet.Order = OrderOptionEnum.Find(termDict.GetString(_ORDER, TermsStatisticsFacet._ORDER_DEFAULT.ToString())); return facet; }
public void PASS_Create() { TermsStatisticsFacet facet = new TermsStatisticsFacet("name", "keyfield", "valuefield"); Assert.IsNotNull(facet); Assert.AreEqual("name", facet.FacetName); Assert.AreEqual("keyfield", facet.KeyField); Assert.AreEqual("valuefield", facet.ValueField); }
public void PASS_Serialize() { TermsStatisticsFacet facet = new TermsStatisticsFacet("name", "keyfield", "valuefield"); string json = JsonConvert.SerializeObject(facet); Assert.IsNotNull(json); string expectedJson = "{\"name\":{\"terms_stats\":{\"key_field\":\"keyfield\",\"value_field\":\"valuefield\"}}}"; Assert.AreEqual(expectedJson, json); }