public void Add(Field f, string s) { if (FieldSymbolics.IsSymbolicField(f)) { Add(f, FieldSymbolics.AsInteger(f, s)); return; } Add(f, OutTranslators.ForField(f).FromString(s)); }
public override StObject FromJObject(JObject jsonObject) { var so = new StObject(); var keys = jsonObject.GetEnumerator(); while (keys.MoveNext()) { var key = keys.Current.Key; try { object value = jsonObject[key]; Field fieldKey = Field.FromString(key); if (fieldKey == null) { // TODO test for UpperCase key name // warn about possibly unknown field continue; } if (FieldSymbolics.IsSymbolicField(fieldKey) && ((JToken)value).Type == JTokenType.String) { value = FieldSymbolics.AsInteger(fieldKey, value.ToString()); } if (value is JToken && ((JToken)value).Type == JTokenType.Integer) { so.Add(fieldKey, ((JToken)value).ToObject <int>()); } else if (value is JToken && ((JToken)value).Type == JTokenType.String) { so.Add(fieldKey, ((JToken)value).ToString()); } else { so.Add(fieldKey, value); } } catch (JsonException e) { throw new ApplicationException("Json deserialization failed.", e); } } return(Formatted(so)); }
public override JObject ToJObject(StObject obj) { var json = new JObject(); foreach (Field f in obj) { try { ISerializedType obj1 = obj[f]; Object someObject = obj1.ToJson(); if (someObject is JToken) { if (FieldSymbolics.IsSymbolicField(f) && ((JToken)someObject).Type == JTokenType.Integer) { someObject = FieldSymbolics.AsString(f, ((JToken)someObject).ToObject <int>()); } json.Add(Field.GetName(f), (JToken)someObject); } else if (FieldSymbolics.IsSymbolicField(f) && someObject is int) { someObject = FieldSymbolics.AsString(f, (int)someObject); json.Add(Field.GetName(f), someObject.ToString()); } else if (someObject is int) { json.Add(Field.GetName(f), (int)someObject); } else { json.Add(Field.GetName(f), someObject.ToString()); } } catch (JsonException e) { throw new ApplicationException("Json serialization failed.", e); } } return(json); }
public void TestAsInteger() { Assert.NotNull(FieldSymbolics.AsInteger(Field.LedgerEntryType, "AccountRoot")); Assert.AreEqual((int)'a', (int)FieldSymbolics.AsInteger(Field.LedgerEntryType, "AccountRoot")); }
public void TestIsSymbolicField() { Assert.IsTrue(FieldSymbolics.IsSymbolicField(Field.LedgerEntryType)); }