2012-10-29 78 views
0

抓住一個JSON對象,我有以下結構的JSON對象:按名稱

[ 
{ 
"filters": [ 
    { 
     "name": "category", 
     "list": [ 
      { 
       "category-abc": { 
        "title": "abc", 
        "number": "2" 
       } 
      }, 
      { 
       "category-def": { 
        "title": "def", 
        "number": "1" 
       } 
      } 
     ] 
    }, 
    { 
     "name": "topic", 
     "list": [ 
      { 
       "topic-abc": { 
        "title": "abc", 
        "number": "6" 
       } 
      }, 
      { 
       "topic-def": { 
        "title": "def", 
        "number": "5" 
       } 
      } 
     ] 
    }, 
} 
] 

名單實際上是更長的時間,有許多名稱|列表對。我期待抓取每個列表,因爲我沿着列表名稱數組迭代,但不希望每次都走這個列表,所以我想按名稱獲取列表。

事情是這樣的:

filters['topic'][0].title 

但是,這是行不通的,因爲有「姓名」鍵那裏。有沒有辦法做到這一點,沒有條件?

+0

你爲什麼不解析JSON,然後再重複? – Reflective

+0

@反射看起來他已經解析了它,這就是爲什麼他有一個數組,而不是一個字符串。 – Barmar

+0

我不認爲你可以做到沒有循環和條件。如果你想直接獲得「主題」元素,你應該已經做出了一個關鍵而不是價值。 – Barmar

回答

1

我想這是你想要的東西(它假定data包含原始JSON對象):

var filters = []; 
foreach (var subitem in data[0].filters) { 
    filters[subitem.name] = subitem.list; 
} 
+0

我在想那個,但有一個要求:名字應該是唯一的。這在問題中沒有指定。 – Reflective

+0

這是假定名稱是唯一的。如果有重複,它將使用最後一個。 – Barmar

+0

是的 - 每個名字都應該是唯一的。 – panzhuli