2011-07-29 14 views
0

ExtJS4を使用して、フォーマットid-label(私の場合は 'id' - 'rdfs:label')のデータを要求します。JSONからExtjsストアへの構文解析

私はJSONレスポンスの複雑な構造を持っている:私は私の店でこのJSONを読んで、このような何かを取得したい

[ 
{ 
"@" : "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" 
} 
] 

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

お知らせを、私は変更したくありませんこのJSONレスポンス(中かっこを削除または追加)

+0

ご質問は?申し訳ありませんが、私はポイントを取得しないでください –

答えて

1

私は私の問題(Ext.data.reader.Reader)を解決するためのAPIドキュメントを使用:

 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のモデルとしての対応を追加します。

 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')); 
     });   
    });