2013-04-04 4 views
0

Какое значение root свойство, если я получаю JSon подобное:ExtJs корневой узел

{ 
    "status": { 
     "status": 0, 
     "msg": "Ok", 
     "protocolversion": "extjs.json" 
    }, 
    "value": { 
     "table": [ 
      [ 
       "admin", 
       "Administrator", 
       "" 
      ], 
      [ 
       "test", 
       "Test", 
       "" 
      ] 
     ], 
     "total": 2 
    } 
} 

Эти данные будут отображаться в GridPanel, 1 строка администратора, 1 строка теста и т.д.

Пробовал:

value, value.table

Как получить эту работу?

ответ

1

value.table является правильным для корневой собственности, но вы используете формат JSON, что я не думаю, что Ext установлен для обработки по умолчанию. В нем есть читатель для json, который используется для массива объектов, а не для вложенных массивов значений полей без информации о сопоставлении объектов.

Если вам нужно использовать этот формат, вам нужно будет создать свои собственные читатели/писатели или просто использовать Ext.Ajax.request(), а в обратном вызове проанализировать вложенный массив на объекты. Что-то вроде:

Ext.Ajax.request({ 
    url: 'path.com/to/content', 
    success: function (response, operation) { 
     var data = Ext.JSON.decode(response.responseText); 
     var fields = data.value.table; 
     var records = []; 
     Ext.Array.each(fields, function (fieldArray, fieldIndex) { 
      Ext.Array.each(fieldArray, function(fieldValue, valueIndex) { 
       //Create record object if it doesn't exist 
       var record = records[valueIndex] || {}; 
       //Create a switch statement based on the array index to set fields 
       switch(fieldIndex) { 
        case 0: 
         record.User_id = fieldValue; 
         break; 
        case 1: 
         record.Username = fieldValue; 
         break; 
       } 
      }); 
     }); 

     //Add the objects to the empty store 
     store.add(records); 
    } 
}); 

Это не производство решения любых средств, поскольку он не обрабатывает эту пустую строку в конце списка или случай, когда вы получите зазубренный массив массивов в поле, которое я могу» Представьте себе, что делать. Если это находится под вашим контролем или влиянием, я бы предложил использовать формат, более похожий на то, что предлагает Ext, чтобы вы могли использовать встроенный json proxy/reader/writer или сходить с ума от него и реализовать формат удаленного вызова внешнего устройства:

{ 
    "success": true, 
    "message": "Success", 
    "data": [ 
     { 
      "User_id": "admin", 
      "Username": "Administrator" 
     }, { 
      "User_id": "admin", 
      "Username": "Administrator" 
     } 
    ] 
} 
+0

Спасибо. Да, формат является специальным и установленным. Я надеялся, что это будет возможно легко разобрать. – Patrick

0

В приведенном выше примере «значение» является свойством root. Но для читателя JSON это имя свойства (или список имен объектов, разделенных точками, если корень вложен).

, чтобы вы могли назначить в свое поле, вам нужно следующее.

поля: [ «table.admin», «table.test»]

+0

Не сделал этого – Patrick

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