Я следую , этот пример
, показанный выше, является примером данных, которые я загрузил в древовидном представлении введите описание изображения здесь
Сгенерированный выходной файл выглядит следующим образом.
[
"TreeNode: name",
"TreeNode: age",
"TreeNode: John Doe",
"TreeNode: 35"
]
Как мне сделать так, чтобы он выглядел так?
{
"name": "John Doe",
"age": 35
}
Это код, который Я использую для извлечения данных.
var settings = new JsonSerializerSettings
{
Converters = new List<JsonConverter> { new TreeConverter() },
Formatting = Formatting.Indented
};
var Nodes = GetChildren(SettingsView.TopNode);
string json = JsonConvert.SerializeObject(Nodes, settings);
Console.WriteLine(json);
System.IO.File.WriteAllText(@"C:\Sample Schema\example.txt", json);
Получить детей
public IEnumerable<TreeNode> GetChildren(TreeNode Parent)
{
return Parent.Nodes.Cast<TreeNode>().Concat(
Parent.Nodes.Cast<TreeNode>().SelectMany(GetChildren));
}
Класс TreeConverter
public class TreeConverter : JsonConverter
{
public override bool CanConvert(Type objectType)
{
return (objectType == typeof(Node<Person>));
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
Node<Person> node = (Node<Person>)value;
JObject obj = new JObject();
obj.Add("Name", node.Value.name);
obj.Add("Age", node.Value.age);
obj.WriteTo(writer);
}
public override bool CanRead
{
get { return false; }
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
throw new NotImplementedException();
}
}
Класс человека
public class Person
{
public string name { get; set; }
public int age { get; set; }
}