2014-03-13 72 views
0

我想用一个Data-Store(JsonRest)提供一个dijit.form.Select(Dojo Select-Box)。问题是,该JSON解析器只接受JSON格式如下:从JSON中删除字符串

[ 
    {id:"1", name:"One1"}, 
    {id:"2", name:"Two1"} 
]; 

我们要调用的web应用的REST的API提供以下JSON:

{ 
    "data": [ 
     {id:"1", name:"One1"}, 
     {id:"2", name:"Two1"} 
], 
    "total": 2, 
    "start": 0, 
    "sort": "name", 
    "order": "asc", 
    "size": 2 
}; 

这就是为什么选择框不显示任何数据。因此,我们需要移除{“data”:part和JSON消息的最后一部分,并将它传递给Dojo Select Box。

数据存储在JsonRest对象中。所以,问题是我们如何能够去除第一和JSON的,仅仅这个在这里被赋予选择盒的方式最后一部分:

[ 
    {id:"1", name:"One1"}, 
    {id:"2", name:"Two1"} 
]; 

谢谢您的解答和最诚挚的问候 本

回答

3

创建从道场的数据的新的数组变量选择似乎最简单的...

var restapidataObj = { 
    "data": [ 
     {id:"1", name:"One1"}, 
     {id:"2", name:"Two1"} 
    ], 
    "total": 2, 
    "start": 0, 
    "sort": "name", 
    "order": "asc", 
    "size": 2 
}; 

var dojoSelectArray = restapidataObj.data; 

现在通过dojoSelectArray到道场

1

将结果存储在对象中并访问该对象的数据属性。

var result = { 
    "data": [ 
    {id:"1", name:"One1"}, 
    {id:"2", name:"Two1"} 
], 
    "total": 2, 
    "start": 0, 
    "sort": "name", 
    "order": "asc", 
    "size": 2 
}; 

result.data会给你的data阵列。

检查在MDN

+0

好吧,但我需要删除“数据”:部分和消息的最后一部分。否则,Dojo Selectbox不会显示任何内容。问题是我如何删除“数据”:[我的JSON字符串? – Ben

+0

'result.data'会给你'[ {id:“1”,name:“One1”}, {id:“2”,name:“Two1”} ]' –

+0

谢谢。我如何将JsonRest中的数据加载到对象中? – Ben

0

resultFromServer =

 { 
     "data": [ 
      {id:"1", name:"One1"}, 
      {id:"2", name:"Two1"} 
    ], 
     "total": 2, 
     "start": 0, 
     "sort": "name", 
     "order": "asc", 
      "size": 2 
    }; 

这可以转换成JavaScript对象文档对象(使用此柜面resultFromServer是一个字符串)

var Output = eval('('+ resultFromServer+')') 

这给你的输出

JSON.stringify(Output.data) 

给串

"[{"id":"1","name":"One1"},{"id":"2","name":"Two1"}]"