2014-03-13 79 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"}]"