Какова хеш-структура для создания JSON? - PullRequest
1 голос
/ 28 апреля 2011

Ниже приведен пример окончательного json, который я передаю в javascript.Я буду использовать ( yajl ) библиотеку ruby ​​для создания этого json из хеш-функции.

Вопрос в том, как должен выглядеть ruby-хеш , который выдает приведенный ниже json?

var data = [{
       data: "basics",
       attr: {},
        children: [
         {data: "login", attr: {run: "run"},
           children: [                   
           {data: "login", attr: {}}
          ]
         } ,
         {data: "Academic Year", attr: {run: "run"},
          children: [                   
           {data: "login", attr: {}},
           {data: "Academic Year", attr: {filter: "mini", SOF: "yes"}}
          ]

         }
        ]
      }];

Ответы [ 4 ]

4 голосов
/ 28 апреля 2011
  1. Скопируйте свой код (точно) после var и до ;
  2. Вставить в Ruby (1,9 +)
    На этом вы закончили. Чтобы доказать это ...
  3. require "json"
  4. puts data.to_json

Результат (с дополнительными переносами строк):

#=> [{"data":"basics","attr":{}, "children":[
#=>    {"data":"login","attr":{"run":"run"},"children":[
#=>      {"data":"login","attr":{}}
#=>    ]},
#=>    {"data":"Academic Year","attr":{"run":"run"},"children":[
#=>      {"data":"login","attr":{}},
#=>      {"data":"Academic Year","attr":{"filter":"mini","SOF":"yes"}}
#=>    ]}
#=> ]}]
3 голосов
/ 28 апреля 2011

Вы можете достаточно легко выяснить, какую структуру данных будет производить этот JSON:

require 'active_support'
json = '[{
       data: "basics",
       attr: {},
        children: [
         {data: "login", attr: {run: "run"},
           children: [
           {data: "login", attr: {}}
          ]
         } ,
         {data: "Academic Year", attr: {run: "run"},
          children: [
           {data: "login", attr: {}},
           {data: "Academic Year", attr: {filter: "mini", SOF: "yes"}}
          ]

         }
        ]
      }]'
puts ActiveSupport::JSON.decode(json).inspect

И тогда быстрое переформатирование вывода даст вам следующее:

[
    {
        "data" => "basics",
        "children" => [
            {
                "data" => "login", 
                "children" => [
                    {
                        "data" => "login", 
                        "attr" => { }
                    }
                ], 
                "attr" => {
                    "run" => "run"
                }
            }, 
            {
                "data" => "Academic Year", 
                "children" => [
                    {
                        "data" => "login", 
                        "attr" => { }
                    }, 
                    {
                        "data" => "Academic Year", 
                        "attr" => {
                            "filter" => "mini", 
                            "SOF" => "yes"
                        }
                    }
                ], 
                "attr" => {
                    "run" => "run"
                }
            }
        ], 
        "attr" => { }  
    } 
]

Вероятно, есть более простые способы, но вышеперечисленное поможет быстро взломать один выстрел.

1 голос
/ 28 апреля 2011

Ваш вопрос не слишком понятен.Вы имеете в виду, что такое структура Ruby, которая создала бы JSON, который вы показываете в своем вопросе?

Если так, то здесь вы идете .... Обратите внимание, что структура базового уровня - это массив Ruby, потому что ваш JSONБазовая структура уровня также является массивом.

mydata = [{
           'data' => "basics",
           'attr' => {},
           'children' => [{
                          'data' => "login",
                          'attr' => {'run' => "run"},
                          'children' => [{
                                         'data' => "login",
                                         'attr' => {}
                                        }]
                          },
                          {
                           'data' => "Academic Year",
                           'attr' => {'run' => "run"},
                           'children' => [{
                                          'data' => "login",
                                          'attr' => {}
                                          },
                                          {
                                           'data' => "Academic Year",
                                           'attr' => {'filter' => "mini", 
                                                      'SOF' => "yes"}
                                          }]
                           }]
         }]
0 голосов
/ 28 апреля 2011

Я только что запустил это в своем браузере, и это похоже на действительный JSON.Это твой вопрос?

...