2012-10-29 52 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