У меня есть одностраничное приложение JS, которое отображает в браузере представление файловой системы windows explorer. Довольно мило. В основе этого лежит JSON, который представляет данные файловой системы. Моя проблема в том, что если пользователь добавляет / удаляет папки или файлы, мне нужно отредактировать данные JSON в C#, чтобы отразить ходы, и я не слишком знаком с библиотекой Newtonsoft. Json, которая выглядит так: Судя по всему, быть go инструментом для такой работы.
Я не совсем уверен, с чего начать. Но я вижу вопрос о том, как исследовать все свойства и их значения во вложенном Json объекте здесь .
Я думаю, может быть, это достойный подход к этому? Скажем, например, пользователь хочет удалить папку с идентификатором: «91625». Может быть, проверить каждое свойство во всем объекте, пока я не достигну свойства с именем "id" с этим значением? Хорошо, давайте попробуем псевдокод:
//Parse the JSON string into a JObject
var obj = JObject.Parse(jsonString);
//Call RemoveNode function which will look through the JObject for the nested object
//with the supplied id, delete the nested object and return the updated JObject
JObject updatedObj = RemoveNode(obj, id);
public JObject RemoveNode(JObject obj, string id){
foreach (JProperty i in obj.Properties())
{
if (!i.Value.HasValues)//If there are no children
{
//A leaf. See if this property is "id" and see if it's value is what
//we want deleted?
if (i.Name == "id" && i.Value == id)
{
//Delete the nested object? Not sure how to do this.
}
}
if (i.HasValues && i.Value.HasValues)//If there are children
{
RemoveNode(JObject.Parse(i.First.ToString()), id);//Recursively call the function
}
}//End foreach loop
return obj;
}//End RemoveNode()
Я лаю здесь правильное дерево или это далеко?