转换AngularJs中的JSON对象

时间:2015-09-03 10:16:16

标签: javascript json angularjs

是否有办法使用Angular转换此JSON对象?我需要从这种格式转换JSON对象:

    $scope.TestJson = {
        "filters": [
                {
                    "dataPropertyID": "VoidType",
                    "label": "Homeless"
                },
                {
                    "dataPropertyID": "VoidType",
                    "label": "Mainstream"
                },
                {
                    "dataPropertyID": "PropertyType",
                    "label": "Flat"
                },
                {
                    "dataPropertyID": "PropertyType",
                    "label": "Cottage"
                }
        ]
    }

采用以下格式:

    $scope.NewTestJson = {
        "filters": [
                {
                    "dataPropertyID": "VoidType",
                    "label":[ "Homeless","Mainstream"]
                },
                {
                    "dataPropertyID": "PropertyType",
                    "label":[ "Flat", "Cottage"]
                }
        ]
    }

2 个答案:

答案 0 :(得分:1)

我认为这是一个JavaScript问题,而不是其他任何问题。尽管如此:

$scope.NewTestJson = {
    filters: [];
};

// Do something for all (old) filter items
$scope.TestJson.filters.forEach(function(filter) {
    // Try to get the existing (new) filter
    var newFilter = $scope.NewTestJson.filters.filter(function(newFilter) {
        return newFilter.dataPropertyID === filter.dataPropertyID;
    }).shift();

    // If the new filter does not exist, create it
    if (!newFilter) {
        newFilter = {
            dataPropertyID: filter.dataPropertyID,
            label: []
        };
        $scope.NewTestJson.filters.push(newFilter);
    }

    // Finally, add the old filter label to the new filter
    newFilter.label.push(filter.label);
});

答案 1 :(得分:0)

json = {
        "filters": [
                {
                    "dataPropertyID": "VoidType",
                    "label": "Homeless"
                },
                {
                    "dataPropertyID": "VoidType",
                    "label": "Mainstream"
                },
                {
                    "dataPropertyID": "PropertyType",
                    "label": "Flat"
                },
                {
                    "dataPropertyID": "PropertyType",
                    "label": "Cottage"
                }
        ]
    };

newJson = new Object();
newJson.filters = new Array();


for (var element in json.filters) {
    var check = 0;
    for (var element2 in newJson.filters) {
        if (json.filters[element].dataPropertyID === newJson.filters[element2].dataPropertyID) {
            newJson.filters[element2].label.push(json.filters[element].label);
            check = 1;
        }
    }
    if (check == 0) {
        var Obj = new Object();
        Obj.dataPropertyID = json.filters[element].dataPropertyID;
        Obj.label = new Array();
        Obj.label.push(json.filters[element].label);
        newJson.filters.push(Obj);
    }
}