2013-02-18 3 views
3

Я встречаюсь теперь с трудной проблемой для меня, которая причиняет мне боль, Я хочу конвертировать [01] JSON в [02].Как я могу переназначить одну линию JSON на иерархический JSON?

[01] JSON:

{locations: [ 
    { 
     country: "Australia", 
     area: "NSW", 
     city: "Gordon" 
    }, 
    { 
     country: "Australia", 
     area: "NSW", 
     city: "Chatswood" 
    } 
]}; 

[02] JSON:

{countries: [ 
    { 
     name: "Australia", 
     areas: [ 
      { 
       name: "NSW", 
       cities: [ 
         { 
          name: "Gordon" 
         }, 
         { 
          name: "Chatswood" 
         } 
       ] 
      } 
     ] 
    } 
]} 
+2

[Что вы пробовали] (http://whathaveyoutried.com) – Joseph

+0

я не встречал библиотеку, которая бы помочь вам изменить структуру данных, так, как вам требуется. Вам может понадобиться сделать это вручную (GSON может значительно помочь). –

+3

Это не имеет никакого отношения к разбору, но это переназначение структуры данных в другую. –

ответ

1

Поскольку вы собираетесь делать кучу поисков, я предлагаю использовать коллекцию объектов, а не ваш конечная структура с массивами. Затем вы можете либо преобразовать его в окончательную структуру, либо изменить код, чтобы использовать его так, как есть.

var countries = {}; 
for (var i=0, loc; loc = locations[i]; i++) { 
    if (!countries[loc.country]) countries[loc.country] = {}; 
    if (!countries[loc.country][loc.area]) countries[loc.country][loc.area] = []; 
    countries[loc.country][loc.area].push(loc.city); 
} 
alert(JSON.stringify(countries)); 
+0

Вау! Я не знаю, почему я не думал об этой идее. Спасибо, Джеймс. Я счастлив теперь решить эту проблему, , и я думаю, сегодня я могу вернуться домой – Notice