Конвертировать JSON ответ на карту - PullRequest
1 голос
/ 13 марта 2020

У меня есть рабочий код, который я пытаюсь изменить.

   let table_specs = {'columns': [ {'name': 'Col1', 'width': 7, ....},
                             {'name': 'Col2', 'width': 8, .....},
                             ........ 
                             {'name': 'Coln', 'width': 30, ....}]}
   foo(table_specs)

   function foo(table_specs){
      for (clmn of table_specs.columns){
        // do something
      }
   }

Я пытаюсь изменить программу, чтобы она сохраняла table_specs в файле JSON и извлекала их с помощью вызова ajax.

z_grid_specs. json

{
"grid1":"{'columns': [ {'name': 'Col1', 'width': 7, ....}, ... {'name': 'Coln', 'wiith': 8, ...}]}"
}

. js на сервере

    var pjson_grid = require('../startup/z_grid_specs.json');
    router.get('/grid_specs', (req, res)=> {   
        res.json(pjson_grid)
    })

и я звоню :

   var table_specs={}
   $.ajax({
    type: 'GET',
    contentType: 'application/json',
    url: '/session/grid_specs',
    success:function(response_data_json) {
        console.log(response_data_json.grid1)
        table_specs = response_data_json.grid1
        foo(table_specs)  
    }
  });

Я могу проверить, что ajax вызывает верные данные, которые выглядят как массив в исходном коде. Но я получаю ошибку на следующем шаге:

table_specs.columns не повторяется

Я получаю ту же ошибку, если использую JSON .stringify (response_data_ json .grid1).

Если я использую JSON .parse (response_data_ json .grid1), я получаю:

Неожиданно токен в JSON в позиции 1

1 Ответ

2 голосов
/ 13 марта 2020

Удалите двойные кавычки из вашего JSON файла:

{
    "grid1": {'columns': [ {'name': 'Col1', 'width': 7, ....}, ... {'name': 'Coln', 'wiith': 8, ...}]}
}

Ключ grid1 имеет значение string, и вам нужно, чтобы оно было object

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...