-1

私はJSONを初めて使用し、次のJSON出力を提供するJavaサーブレットを持っています。

{
     "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を使用する場合、最善の方法は何ですか?

ありがとう、ジェイ

4

2 に答える 2

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));
于 2013-03-26T02:32:34.370 に答える
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);
于 2013-03-26T02:36:35.313 に答える