2013-03-26 5 views
-1

Я новичок в JSON и иметь сервлет Java, который дает следующий результат: JSONКак построить вложенный объект JSON?

{ 
    "35808": "Huntsville, Alabama", 
    "94203": "Sacramento, California", 
    "33054": "Miami, Florida", 
    "32801": "Orlando, Florida", 
    "30301": "Atlanta, Georgia", 
    "78717": "Austin, Texas" 
} 

После извлечения JSON с помощью JavaScript, я хочу, чтобы создать вложенную JSON, что группы по штатам, результат должен быть:

{ 
    "A": { 
     "35808": "Huntsville, Alabama" 
    }, 
    "C": { 
     "94203": "Sacramento, California" 
    }, 
    "F": { 
     "33054": "Miami, Florida", 
     "32801": "Orlando, Florida" 
    }, 
    "G": { 
     "30301": "Atlanta, Georgia" 
    }, 
    "T": { 
     "78717": "Austin, Texas" 
    } 
} 

Каков наилучший способ для этого, используя Javascript? или если используется Java, что является лучшим способом?

Спасибо, Jay

+1

Когда вы более одного объекта 'JSON', это не дольше JSON объект это должен быть массив JSON. – NewUser

+0

Я попытался использовать Javascript для создания двумерного массива, в котором хранятся буквы {«A», «C», «F», «G», «T»} и {«zipcode»: «city», «state»}, я тогда использовал функцию JSON.stringify (массив), чтобы получить строку JSON без успеха. –

ответ

0

Это следует сделать это:

var parsedJSON = …; 
var byState = {}; 
for (var prop in parsedJSON) { 
    var address = parsedJSON[prop]; 
    var state = address.split(",")[1] || ""; 
    var stateKey = state.charAt(0); 
    if (! (stateKey in byState)) 
     byState[stateKey] = {}; 
    byState[stateKey][prop] = address; 
} 
console.log(JSON.stringify(byState, null, 4)); 
+0

Подобно тому, что я пытался сделать, спасибо :) –

0

Это предполагает, что государства сортируются. не http://jsfiddle.net/N23SL/

var originalJson = { 
    "35808": "Huntsville, Alabama", 
    "94203": "Sacramento, California", 
    "33054": "Miami, Florida", 
    "32801": "Orlando, Florida", 
    "30301": "Atlanta, Georgia", 
    "78717": "Austin, Texas" 
} 


var groupMe = function(originalJson) 
{ 
    var grouped = {}; 
    // loop over each property 
    for(var key in originalJson) 
    { 
     var value = originalJson[key]; 
     var state=value.split(", ")[1]; 
     var stateLetter = state[0]; 

     var letterGroup = grouped[stateLetter]; 
     if(typeof letterGroup === 'undefined') 
     { 
      letterGroup = {}; 
      grouped[stateLetter] = letterGroup; 
     } 

     letterGroup[key] = value; 
    } 

    return grouped; 

}; 

var groupedJson = groupMe(originalJson); 

console.log(groupedJson); 
Смежные вопросы