Как получить отдельные конкретные значения для ключей в структуре JSON?

0

Я занимаюсь такими упражнениями, как:

var jsonres;
jsonres = JSON.stringify(jsonObjectArray);
alert(jsonvals); // getting the below json structure

jsonres = {
    "key01": [10, "Key01 Description"],
    "key02": [false, "It a false value"],
    "key03": [null, "Testing Null"],
    "key04": ["tests", "Another Test Value"],
    "key05": [[25, 50], "Some testing values"]
}

Но мне нужно:

jsonres = {
    "key01": 10,
    "key02": false,
    "key03": null,
    "key04": "tests",
    "key05": [25,50]
}

Как я могу получить как выше структуры (означает, что мне нужны только одиночные значения, не нужны ли другие значения/несколько значений для соответствующих клавиш)? Пожалуйста, помогите мне и спасибо заранее.

  • 0
    Пробовали ли вы for-in цикле?
Теги:
arrays

5 ответов

1
Лучший ответ
var jsonres = {
    "key01": [10, "Key01 Description"],
    "key02": [false, "It a false value"],
    "key03": [null, "Testing Null"],
    "key04": ["tests", "Another Test Value"],
    "key05": [[25, 50], "Some testing values"]
}

for(var key in jsonres){
   if(jsonres.hasOwnProperty(key)){
      jsonres[key] = jsonres[key][0];
   }
}

console.log(jsonres)

https://jsfiddle.net/xd4nwc0m/

  • 0
    Поскольку он определил объект, и он (по-видимому) является просто объектом значения, я не думаю, что вам нужно проверять, имеет ли объект на данный момент свое собственное свойство.
  • 0
    @Jackhardcastle: это определенный объект для нас, не уверен, как это будет в приложении реального времени ... всегда лучше проверять ... независимо от того, знаете ли вы свои объекты или нет ....
Показать ещё 7 комментариев
3

Пытаться

for(var key in jsonres) {
    jsonres[key] = jsonres[key][0];
}

Здесь скрипка https://jsfiddle.net/Lzb1dum3/

  • 0
    спасибо за ваше решение, я применил вышеупомянутое в своей задаче, но я получаю: TypeError: Невозможно назначить только для чтения свойство '0' строки '---'.
  • 1
    Мне нужно увидеть ваш полный код @Dhana
Показать ещё 1 комментарий
1

Всего одна строка кода для итерации ключей и назначения:

var jsonres = {
    "key01": [10, "Key01 Description"],
    "key02": [false, "It a false value"],
    "key03": [null, "Testing Null"],
    "key04": ["tests", "Another Test Value"],
    "key05": [[25, 50], "Some testing values"]
}

Object.keys(jsonres).forEach(function (k) { jsonres[k] = jsonres[k][0]; });
document.write('<pre>' + JSON.stringify(jsonres, 0, 4) + '</pre>');
1

Запустите это и убедитесь, что он генерирует то, что вы хотите:

var jsonres = {
  "key01": [10, "Key01 Description"],
  "key02": [false, "It a false value"],
  "key03": [null, "Testing Null"],
  "key04": ["tests", "Another Test Value"],
  "key05": [[25, 50], "Some testing values"]
} 

for (var key in jsonres) {
  jsonres[key] = jsonres[key][0];
  alert(jsonres[key]);
}
1

попробуй вот так

var editer = angular.module('editer', []);
function myCtrl($scope) {
$scope.jsonres = {
  "key01": [10, "Key01 Description"],
  "key02": [false, "It a false value"],
  "key03": [null, "Testing Null"],
  "key04": ["tests", "Another Test Value"],
  "key05": [[25, 50], "Some testing values"]
} 

angular.forEach($scope.jsonres, function(value,key){
      $scope.jsonres[key] = value[0];
  });

console.log($scope.jsonres);
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="editer" ng-controller="myCtrl" class="container">
  
  <pre >{{jsonres|json}}</pre>
</div>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню