2016-05-31 1 views
0

Я получаю объект JSON в качестве ответа от веб-сервиса, кто в данный формат похож на: -Как разобрать ответ от прокси-сервера extjs?

 { 
     studentData:[ 
      { 
       "history":25, 
       "science":69, 
       "maths":45 
      } 
      ] 
     } 

Я использую следующий следующий код для чтения JSON: -

Ext.define('MyStore.store.dashboard.graphs.Temp', { 
extend: 'Ext.data.Store', 
proxy: { 
     type: 'ajax', 
     url: 'abc.php', 

     headers: { 
      'Content-Type': 'application/json' 
     }, 

     reader: { 
       type: 'json', 
       rootProperty: 'studentData', 

       listeners: { 

        exception: function(reader, response, error, eOpts) { 
         console.log('YT reader exception'); 
         console.log(error.message, error); 
         console.log(response); 
        } 

       } 
      } 

Могу ли я проанализируйте ответ JSON так, чтобы он был сохранен в следующем формате?

 { 
     studentData:[ 
      { 
       "subject":"History", 
       "marks":"25"  
      }, 
      { 
       "subject":"Maths", 
       "marks":"25" 
      } 
      ] 
     } 

Мне нужно, чтобы показать эти значения в таблице, имеющей xfield как субъект и yfield как знаки. Есть ли слушатель, который я могу добавить в прокси-сервер, чтобы я мог изменить структуру магазина в соответствии с моим требованием?

+0

Возможная Дубликат [данных процесса ExtJS магазин прокси после того, как данные получили] (http://stackoverflow.com/questions/14633510/process-extjs-store-proxy-data-after-data-recieved). Я думаю, что нить отвечает на все ваши вопросы. –

ответ

1

В зависимости от версии ExtJS, которую вы используете, вы можете изменить данные JSON до того, как магазин загрузит его.

ExtJS 4 - Вы можете создать свой собственный класс для чтения путем расширения Ext.data.reader.Reader класса и переопределить getResponseData (ответ) и изменить JSON и вернуть ResultSet.

ExtJS 5 - Вы можете использовать функцию преобразования класса Reader и изменить объект данных ответа.

Ext.create('Ext.data.Store', { 
    model: 'User', 
    proxy: { 
     type: 'ajax', 
     url : 'users.json', 
     reader: { 
      type: 'json', 
      transform: { 
       fn: function(data) { 
        // do some manipulation of the raw data object 
        return data; 
       }, 
     scope: this 
      } 
     } 
    },}); 
1

Вы можете использовать transform функцию читателя:

Если функция преобразования установлена, она будет вызываться непосредственно перед readRecords выполняет. Он передает исходный (десериализованный) объект данных. Функция преобразования возвращает объект данных, который может быть модифицированной версией исходного объекта данных или полностью новым объектом данных. Преобразование может быть функцией или именем метода на экземпляре Reader или объектом с ключом «fn» и необязательным ключом «scope».

Смежные вопросы