c# - JObject удаляет вложенный Объект из JSON с указанным значением c - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть одностраничное приложение 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()

Я лаю здесь правильное дерево или это далеко?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...