今天做了一个实例用extjs4的struts2+json的包序列一个JSON格式的数据来初始化treepanel他们返回的格式如下:{"json":"[{'cid':1,'text':'专家观点','leaf':'true','parentID':1}]"}
如何把“[”前面的双引号去掉形成
{"json":"[{'cid':1,'text':'专家观点','leaf':'true','parentID':1}]"}
或者直接返回
[{'cid':1,'text':'专家观点','leaf':'true','parentID':1}]
treepanel部分代码如下Ext.define('Menu', {
        extend:'Ext.data.Model',
        fields:[
            {name:'cid',type:'int'},
            'text',
            'leaf',
            'parentID'
        ],
        proxy:{
            type:'ajax',
            url:'../do.jsp?met=get&pid=0', 
            reader:{
             type: 'json',
             root:'json'
            }
        }
    });
struts.xml<package name="struts2" namespace="/" extends="json-default"> 
  <action name="do" class="com.Manage.Action.LoginAction"> 
   <result type="json">
     <!-- 这里指定将序列化dataMap中的那些属性 -->
   <param name="includeProperties">json.*</param>
   </result>
  </action>
  </package>

解决方案 »

  1.   


    上面那里写错了开成这种格式的/其实就是那个双引号去掉
    {"json":[{'cid':1,'text':'专家观点','leaf':'true','parentID':1}]}
      

  2.   

    这是前段还是后台的??直接replace不行?
      

  3.   

    var obj={"json":"[{'cid':1,'text':'专家观点','leaf':'true','parentID':1}]"}
    var json=obj.json;
    var x= eval(obj.json)[0];
    alert(x.cid);
    alert(x.text);
    alert(x.leaf);
    alert(x.parentID);
      

  4.   

    一般后台用gson 就可以,ext的数据gson配合得都很好
      

  5.   

    你也可以循环取var obj={"json":"[{'cid':1,'text':'专家观点','leaf':'true','parentID':1}]"}
    var json=obj.json;
    var x= eval(obj.json)[0];
    for (var prop in x) {  
      if (x.hasOwnProperty(prop)) {   
          alert("key: " + prop + " value: " + x[prop])  
      }  
      

  6.   

    那种在JAVASCRIPT里是可以使用的/但是我现在是想让他邦定到TREEP0ANEL上/我用了STRUTS2里的JSON包/所以就不想做那个处理了/
    说得直白点就是没有办法让STRUTS2里的JSON包返回
    {"json":[{'cid':1,'text':'专家观点','leaf':'true','parentID':1}]}