我想在不重新排序数组的情况下对JSON进行排序。 JSON看起来像:
{
"objectid":"589a399724bd631d0424265a",
"mappingerrors":[
],
"timestamp":"UCT",
"models":[
{
"models4":"589a399724bd631d01234567",
"models1":"AAAA",
"models3":"244",
"models5":"7ee92c958a051e66f19d6561575c5642",
"models2":"01945610",
"values":[
{
"11":"YYYY",
"1":"A",
"9":"B",
"5":"XXXX",
"3":2,
"10":239.804,
"6":"C",
"2":"D",
"4":"2017-02-03T21:53Z",
"8":"MSFT",
"7":"TTTT"
}
],
"models6":"2017-02-03T21:53Z"
}
]
}
现在我想对此进行排序:
{
"mappingerrors":[
],
"models":[
{
"models1":"AAAA",
"models2":"01945610",
"models3":"244",
"models4":"589a399724bd631d01234567",
"models5":"7ee92c958a051e66f19d6561575c5642",
"models6":"2017-02-03T21:53Z",
"values":[
{
"1":"A",
"2":"D",
"3":"2",
"4":"2017-02-03T21:53Z",
"5":"XXXX",
"6":"C",
"7":"TTTT",
"8":"MSFT",
"9":"B",
"10":"239.804",
"11":"YYYY"
}
]
}
],
"objectid":"589a399724bd631d0424265a",
"timestamp":"UCT"
}
我尝试使用以下代码,但它没有给出适当的结果。
function sortObject(jsonObject) {
var sorted = {},
key, a = [];
for (key in jsonObject) {
if (jsonObject.hasOwnProperty(key)) {
a.push(key);
}
}
a.sort();
for (key = 0; key < a.length; key++) {
sorted[a[key]] = jsonObject[a[key]];
}
return sorted;
}
有没有办法通过忽略JSON对象中的数组来做到这一点?
答案 0 :(得分:0)
您可以使用以下代码对数组进行排序。
<form name="addUserForm" novalidate>
<div class="modal-body">
<div class="row">
<div class="col-sm-12">
<div class="form-group">
<label for="email">Email:</label>
<input class="form-control" type="email" id="email" name="email" ng-model="addUserFormData.email" ng-pattern="^\S+@(([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,6})$" required placeholder="xxx@xxx.com">
<span class="error_text" ng-show="addUserForm.email.$error.required && addUserForm.email.$touched">Required</span>
<span class="error_text" ng-show="!addUserForm.email.$error.required && addUserForm.email.$error.email && addUserForm.email.$dirty">Invalid Email</span>
</div>
<div class="form-group">
<label for="username">Customer Name:</label>
<input class="form-control" type="text" id="username" name="username" ng-model="addUserFormData.username" ng-pattern="/^[\w -]*$/" ng-minlength="2" ng-maxlength="20" maxlength="20" required placeholder="Customer Name">
<span class="error_text" ng-show="addUserForm.username.$error.required && addUserForm.username.$touched">required</span>
<span class="error_text" ng-show="!addUserForm.username.$error.minLength && !addUserForm.username.$error.maxLength && addUserForm.username.$error.pattern && addUserForm.username.$dirty">Name must contain letters and space only.</span>
<span class="error_text" ng-show="!addUserForm.username.$error.required && (addUserForm.username.$error.minlength || addUserForm.username.$error.maxlength) && addUserForm.username.$dirty">Name must be between 2 and 20 characters.</span>
</div>
<div class="form-group">
<label>Role:</label><br />
<label class="radio-inline"><input type="radio" name="role" ng-model="addUserFormData.roleAdmin" ng-required="addUserFormData.roleAdmin || addUserFormData.roleUser">Admin</label>
<label class="radio-inline"><input type="radio" name="role" ng-model="addUserFormData.roleUser" ng-required="addUserFormData.roleAdmin || addUserFormData.roleUser">User</label>
</div>
<div class="form-group">
<label>Accessable To:</label>
<div class="clearfix"><!-- donot delete this -- clear both property --></div>
<div class="access_checkbox">
<label class="checkbox-inline">
<input type="checkbox" ng-model="addUserFormData.cStoreAnalytics" ng-required="addUserFormData.cStoreAnalytics || addUserFormData.cameraAnalytics || addUserFormData.wifiAnalytics">C Store Analytics
</label>
<input class="form-control mar_bot_5" type="text" ng-disabled="!addUserFormData.cStoreAnalytics" placeholder="Username">
<input class="form-control" type="password" ng-disabled="!addUserFormData.cStoreAnalytics" placeholder="Password">
</div>
<div class="access_checkbox">
<label class="checkbox-inline">
<input type="checkbox" ng-model="addUserFormData.cameraAnalytics" ng-required="addUserFormData.cStoreAnalytics || addUserFormData.cameraAnalytics || addUserFormData.wifiAnalytics" >Camera Analytics
</label>
<input class="form-control mar_bot_5" type="text" ng-disabled="!addUserFormData.cameraAnalytics" placeholder="Token Id">
</div>
<div class="access_checkbox">
<label class="checkbox-inline">
<input type="checkbox" ng-model="addUserFormData.wifiAnalytics" ng-required="addUserFormData.cStoreAnalytics || addUserFormData.cameraAnalytics || addUserFormData.wifiAnalytics" >Wifi Analytics
</label>
<input class="form-control mar_bot_5" type="text" ng-disabled="!addUserFormData.wifiAnalytics" placeholder="Username">
<input class="form-control" type="password" ng-disabled="!addUserFormData.wifiAnalytics" placeholder="Password">
</div>
<div class="clearfix"><!-- donot delete this -- clear both property --></div>
<p class="note_text">Make sure you have entered correct username and password</p>
</div>
<div class="form-group">
<label>Password:</label>
<input class="form-control" type="password" placeholder="Password">
</div>
<div class="form-group">
<label>Confirm password:</label>
<input class="form-control" type="password" placeholder="Confirm password">
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
<button type="submit" ng-disabled="addUserForm.$invalid" ng-click="addUser()" class="btn redcolor_btn"> <!--data-dismiss="modal"-->Add</button>
</div>
</form>
&#13;
您可以运行代码段并验证。
希望这有帮助!