2011-07-29 13 views
0

ExtJS4를 사용하여 id-label 형식의 데이터를 요청합니다 (필자의 경우 'id'- 'rdfs : label').JSON to Extjs Store를 구문 분석하십시오.

[ 
{ 
"@" : "msg:M_8CE1C07B1CFC469", 
"a" : "msg:Message", 
"msg:in-reply-to" : "msg:M4e32b0b7e37ae", 
"msg:sender" : "pacahon", 
"msg:reciever" : "Ennoia:DocumentTypesStore.listTemplates", 
"msg:result" : [ 
    { 
    "@" : "user_onto:881fc0a8-2912-4964-86c6-adad4a713eb8", 
    "dc:creator" : "auth:user1", 
    "dc:identifier" : "881fc0a8-2912-4964-86c6-adad4a713eb8", 
    "rdfs:label" : "undefined|ru", 
    "rdfs:subClassOf" : ["user_onto:881fc0a8-2912-4964-86c6-adad4a713eb8_v_1_f_0","user_onto:881fc0a8-2912-4964-86c6-adad4a713eb8_v_1_f_1","user_onto:881fc0a8-2912-4964-86c6-adad4a713eb8_v_1_f_2","user_onto:881fc0a8-2912-4964-86c6-adad4a713eb8_v_1_f_3","docs:Document"] 
    }, 
    { 
    "@" : "user_onto:ef54ecef-8e19-41ea-b1cc-2bc4ebb40877", 
    "dc:creator" : "auth:user1", 
    "dc:identifier" : "ef54ecef-8e19-41ea-b1cc-2bc4ebb40877", 
    "rdfs:label" : "type1|ru", 
    "rdfs:subClassOf" : ["user_onto:ef54ecef-8e19-41ea-b1cc-2bc4ebb40877_v_1_f_0","user_onto:ef54ecef-8e19-41ea-b1cc-2bc4ebb40877_v_1_f_1","user_onto:ef54ecef-8e19-41ea-b1cc-2bc4ebb40877_v_1_f_2","user_onto:ef54ecef-8e19-41ea-b1cc-2bc4ebb40877_v_1_f_3","docs:Document"] 
    }], 
"msg:status" : "ok", 
"msg:reason" : "запрос выполнен: авторизованны все найденные субьекты :  2" 
} 
] 

내 가게에서이 JSON을 읽고 이렇게 뭔가 싶어 :

[{"@" : "user_onto:881fc0a8-2912-4964-86c6-adad4a713eb8" 
    "rdfs:label" : "undefined|ru"}, 
{"@" : "user_onto:ef54ecef-8e19-41ea-b1cc-2bc4ebb40877" 
    "rdfs:label" : "type1|ru"}] 

공지 사항, 내가 변경하지 않으

나는 JSON 응답의 복잡한 구조를 가지고 이 JSON 응답 (중괄호 제거 또는 추가). 그런 다음

 Ext.define("Response", { 
       extend: 'Ext.data.Model', 
       fields: [ 
        {name:'id', type:'string', mapping:'@'} 
       ], 

       hasMany: {model: 'Message', name: 'messages', associationKey:'msg:result'}, 
      }); 

     Ext.define("Message", { 
       extend: 'Ext.data.Model', 
       fields: [{name:'id', type:'string', mapping:'@'}, {name:'title', type:'string', mapping:'rdfs:label'}], 
       belongsTo: 'Response' 
      }); 

내가 내 JsonStore 모델로 응답을 추가합니다 :

+0

음, 질문은 무엇입니까? 미안 나는 요점을 얻지 않는다. –

답변

1

나는 내 문제 (Ext.data.reader.Reader)를 해결하기 위해 API의 문서를 사용

 proxy: { 
       type: 'ajax', 
       url: './controller.php?class=DocumentTypesStore&action=get&method=listTemplates',   
       method: "POST", 
       actionMethods: {read: 'POST'},   
       reader: { 
        type: 'json', 
        root: [], 
          idProperty: '@' 
       } 
      } 

그리고 읽을 수 있습니다 지금 값 :

jsonstore.on('load', function(){ 
     var response = jsonstore.first(); 
     console.log(response.get('id')); 
     response.messages().each(function(message) { 
      console.log(message.get('id')); 
     });   
    });