在AngularJs中转换JSON对象

Transform JSON Object in AngularJs

本文关键字:JSON 对象 转换 AngularJs      更新时间:2023-09-26

是否有一种方法来转换这个JSON对象使用Angular?我需要从以下格式转换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"]
                }
        ]
    }

我认为这是一个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);
});
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);
    }
}