2013-03-26 179 views
-1

我是新來的JSON,並有一個Java servlet,讓下面的JSON輸出:如何構建嵌套的JSON對象?

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

檢索通過JavaScript的JSON後,我想創建一個嵌套的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,最好的方法是什麼?

感謝, 周杰倫

+1

當你把一個以上的'JSON'對象,它不再是一個JSON對象,它應該是一個JSON陣列。 – NewUser 2013-03-26 02:35:37

+0

我試過使用Javascript構建一個存儲字母{「A」,「C」,「F」,「G」,「T」}和{「zipcode」:「city」的二維數組, 「state」},然後我使用JSON.stringify(array)函數來獲取JSON字符串,但沒有成功。 – 2013-03-26 02:41:09

回答

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

與我正在嘗試做的相似,謝謝:) – 2013-03-26 03:38:40

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);