Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   парсинг json (https://javascript.ru/forum/misc/61436-parsing-json.html)

Nesquik 18.02.2016 10:53

парсинг json
 
[{"key1" : "value1", "key2" : "value2"},{"key1" : "value1", "key2" : "value2"},{"key1" : "value1", "key2" : "value2"}]

<table>
   <thead>
      <tr>
         <th>caption for key1</th>
         <th>caption for key2</th>
      </tr>
   </thead>

   <tbody>
      <tr>
         <td>value of key1</td>
         <td>value of key2</td>
      </tr>
   </tbody>
</table>


как?! через eval? я могу распарсить json вида:
["item" : {"key1" : "value1", "key2" : "value2"}, "item" : {"key1" : "value1", "key2" : "value2"}, "item" : {"key1" : "value1", "key2" : "value2"}]


а с этим чего-то застрял :(

P.s. вроде разобрался, однако интересны ваши варианты решения.

рони 18.02.2016 10:59

Цитата:

Сообщение от Nesquik
как?! через eval? я могу распарсить json вида:

нет такого вида ... и для json есть стандартная функция JSON.parse( );
и Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.Здравствуйте!

Nesquik 18.02.2016 11:09

Цитата:

стандартная функция JSON.parse( );
ну я, конечно, имел ввиду возможность обращаться к ключу через key.value

$.each(data, function(index, obj)

obj.name

рони 18.02.2016 11:54

Nesquik,
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">

  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
  <script>
   $(function() {
    var data = '{"item1" : {"key1" : "value1", "key2" : "value2"}, "item2" : {"key1" : "value3", "key2" : "value4"}, "item3" : {"key1" : "value5", "key2" : "value6"}}';
    data = JSON.parse(data);
    $.each(Object.keys(data), function(i, item) {
        $("table tbody").append($("<tr/>").append($.map(Object.keys(data[item]), function(key) {
            return $("<td/>", {
                text: data[item][key]
            })
        })))
    })
});
  </script>
</head>

<body>


<table>
   <thead>
      <tr>
         <th>caption for key1</th>
         <th>caption for key2</th>
      </tr>
   </thead>

   <tbody>

   </tbody>
</table>

</body>

</html>

Nesquik 18.02.2016 13:08

Рони, спасибо, неплохое решение, единственное что если взять более общий случай (когда value из json мы вставляем как в td, так и куда-то еще).

у вас получилось слишком красиво :D


Часовой пояс GMT +3, время: 10:22.