2016-11-22 8 views
2

を削除するためにLINQを通じてJson.Netを使用してノードを検索:私は、JSONデータのフォーマットのこの種を持っている子ノードを挿入するか、それを

{ 
    "Name": "MainMenu", 
    "Text": "", 
    "Guid": "047bf56e75f44c14b56a4b84f3af6dbe", 
    "ParentGuid": "00000000000000000000000000000000" 
    "MenuEntries": [{ 
      "Name": "Home", 
      "Text": "Home", 
      "Guid": "1e3df5fb3d8e463b8f37e8ccdb291802", 
      "ParentGuid": "047bf56e75f44c14b56a4b84f3af6dbe", 
      "MenuEntries": [{ 
        "Name": "About", 
        "Text": "About", 
        "Guid": "f476a3444e2943668d86433f4c88374c", 
        "ParentGuid": "1e3df5fb3d8e463b8f37e8ccdb291802", 
        "MenuEntries": [] 
       }, { 
        "Name": "Contact", 
        "Text": "Contact Us", 
        "Guid": "51b461ec6abd4aecb95cf662e8e15ae6", 
        "ParentGuid": "1e3df5fb3d8e463b8f37e8ccdb291802", 
        "MenuEntries": [] 
       } 
      ] 
     }, { 
      "Name": "About", 
      "Text": "About", 
      "Guid": "6954d6f747ef4d2dae33de0f0efae9cc", 
      "ParentGuid": "047bf56e75f44c14b56a4b84f3af6dbe", 
      "MenuEntries": [] 
     }, { 
      "Name": "Contact", 
      "Text": "Contact Us", 
      "Guid": "634cfb99b70b4395b94061ae4f082aba", 
      "ParentGuid": "047bf56e75f44c14b56a4b84f3af6dbe", 
      "MenuEntries": [] 
     } 
    ] 
} 

「GUIDを使用してLINQのを介して特定のノードを見つける方法'フィルタリングのためのフィールド?

また、選択したノードに子ノード( 'MenuEntries')を追加してこのノードを削除する方法はありますか?

+0

uはそうしようとしている何遠い? –

+0

JObjectに文字列を解析して、 'Where'拡張子を使用しようとしましたが、使用方法がわかりません。 – eSPiYa

答えて

1

あなたは、モデルを作成することができます

public class MenuEntry 
    { 
     public string Name { get; set; } 
     public string Text { get; set; } 
     public string Guid { get; set; } 
     public string ParentGuid { get; set; } 
     public List<object> MenuEntries { get; set; } 
    } 

    public class RootObject 
    { 
     public string Name { get; set; } 
     public string Text { get; set; } 
     public string Guid { get; set; } 
     public string ParentGuid { get; set; } 
     public List<MenuEntry> MenuEntries { get; set; } 
    } 

をして、それをデシリアライズ:

string jsonString = System.IO.File.ReadAllText(Server.MapPath("~/json/test.json")); 
RootObject Menu = JsonConvert.DeserializeObject<RootObject>(jsonString); 

あなたは、そのようなMenuEntriesでノードを選択することができます。

foreach (var item in Menu.MenuEntries) 
    { 
     if (item.Guid == "1e3df5fb3d8e463b8f37e8ccdb291802") 
      { 
       Console.WriteLine(item.Name); 
       //=> Home 
      } 
    } 
+0

私はこのパスを試しましたが、何らかの理由で、検索されたノードが参照として返されず、そのノードの新しいコピーとして返されました。 – eSPiYa

+0

私はノードへのアクセスに対する私の答えを更新しました。 – Yanga

+0

これは、RootObjectの子に対して機能する場合があります。子どものMenuEntryをチェックするために何らかの再帰関数を作成しようとしましたが、フェッチされたノードは参照として返されず、新しいコピーとして返されます。 – eSPiYa

関連する問題