将自定义 JSON 解析为 ExtJS 4.1 TreeStore

Posted

技术标签:

【中文标题】将自定义 JSON 解析为 ExtJS 4.1 TreeStore【英文标题】:Parsing custom JSON into an ExtJS 4.1 TreeStore 【发布时间】:2012-07-06 11:02:22 【问题描述】:

我有一个响应 JSON 字符串的 HTTP 服务器。它们看起来像这样:

... “价值”: “孩子们”:[ "路径":"KEY_518693", "名称":"KEY_518693", "children_count_overall":0, "children_page":1, “children_pages”:1, “children_pagesize”:10 ... ], "children_count_overall":1, "children_page":1, “children_pages”:1, "children_pagesize":1, “名称”:空, “路径”:空, ...

每个请求都有父节点("value"),我为此请求了子节点和这个子节点("children"),还有一些分页信息。

如果没有指定父节点,则返回根节点作为虚拟根节点的子节点。

我将代理的"root" 属性设置为"value",因此代理知道在哪里搜索节点,但是我的TreeStore 的tree 成员在load() 之后有一个奇怪的结构:

tree: 
  childNodes: [
    
      childNodes: [], <-- no child?
      data: 
        children: [
           ...the raw data of the "children" node (like in the example above)...
        ],
        ... the data of the "value" node and some data from the implicit node model...
      
    
  ]

"value" 中的对象不知何故被转换为节点并插入到树中,但 "children" 数组中的对象不会被转换并最终成为此 "value"node 的数据。

【问题讨论】:

【参考方案1】:

TreeStore 旨在使用 JSON 对象:


  "success": true, 
  "Root": [
          ...,...,... //Children
          ]

由于您没有指定根节点内的数组,所有这些信息都作为原始数据传递。此外,如果您希望能够访问您的数据而不必通过“原始”信息,最好指定一个模型,您可以在其中指定每个节点数据内的字段。

所以基本上我会说最好重做您的服务器响应或自己检查原始数据。

【讨论】:

以上是关于将自定义 JSON 解析为 ExtJS 4.1 TreeStore的主要内容,如果未能解决你的问题,请参考以下文章

将自定义组件添加到 EXTJS 图表

在 ExtJS 中,如何将自定义 CSS 类添加到数据网格行?

ExtJS 4.1 - JSON 中关联的嵌套 hasOne

ExtJS 4.1 - 检索嵌套 JSON 的 hasOne 信息

是否可以在 extjs4.1 中解析没有根对象的 json 响应

创建自定义布局 ExtJs 4.1