public void WriteJson(JsonObjectElement rootElement, string filePath) { var rootObj = new JObject(); rootElement.Children.ForEach(child => AppendRecursive(rootObj, child)); _fileSystem.File.WriteAllText(filePath, rootObj.ToString()); }
private static JsonObjectElement AlignObjectStructure(JsonObjectElement element, IReadOnlyCollection <string> missingKeyParts) { foreach (var keyPart in missingKeyParts) { element = element.AddObjectElement(keyPart); } return(element); }
public IReadOnlyCollection <TranslationElement> CreateElementsToTranslate( JsonObjectElement source, JsonObjectElement target) { var sourceValueElements = source.GetFlatValueElements(); var targetValueElements = target.GetFlatValueElements(); var missingElements = sourceValueElements.Except(targetValueElements).ToList(); var result = missingElements.Select(f => new TranslationElement(f.Key, f.Value.ToString())).ToList(); return(result); }
private void CreateRecursive(JObject jobj, JsonObjectElement objectElement) { foreach (var property in jobj.Properties()) { if (property.Value.Type == JTokenType.Object) { var newObjectElement = objectElement.AddObjectElement(property.Name); CreateRecursive((JObject)property.Value, newObjectElement); } else { objectElement.AddValueElement(property.Name, property.Value); } } }
public JsonObjectElement Parse(string filePath) { var rootObjectElement = new JsonObjectElement(string.Empty, null); if (!_fileSystem.File.Exists(filePath)) { return(rootObjectElement); } var jsonText = _fileSystem.File.ReadAllText(filePath); if (string.IsNullOrEmpty(jsonText)) { return(rootObjectElement); } var jObject = JObject.Parse(jsonText); CreateRecursive(jObject, rootObjectElement); return(rootObjectElement); }
private static void AlignKeyValue(JsonObjectElement root, TranslationElement element) { var jsonKey = JsonKey.Create(element.Key); var depeestElementResult = root.Children .Select(f => f.FindDeepestElement(jsonKey.FullKey)) .FirstOrDefault(f => f.IsSuccess)?.Value ?? root; if (depeestElementResult is JsonObjectElement objectElement) { var missingKeyParts = jsonKey.FetchMissingObjectElementKeyParts(objectElement.Key); objectElement = AlignObjectStructure(objectElement, missingKeyParts); objectElement.AddValueElement(jsonKey.ValueElementKey, element.Value); } else { var valueElement = depeestElementResult as JsonValueElement; if (valueElement != null) { valueElement.ReplaceValue(element.Value); } } }
public void AlignRootElement(JsonObjectElement root, IReadOnlyCollection <TranslationElement> elements) { elements.ForEach(f => AlignKeyValue(root, f)); }