2013-07-24 54 views
2

下面是一段JavaScript代碼,從我的C#Web MVC應用程序:我怎麼能一個JSON對象轉換爲數組中的JavaScript

$.ajax({ 
     url: 'myurl' 
     }).done(function(response) { 
      $scope.Vdata = JSON.parse(response); 
      return $scope.$apply(); 
     }); 

JSON響應形成這個調用看起來像這樣

"{ 
    \"renditions\": { 
     \"live\": \"true\", 
     \" type\": \"default\", 
     \"rendition\": { 
      \"name\": \"Live \", 
      \"url\": \"http: //mysite\" 
     } 
    } 
}" 

我想將json響應演繹對象包裝成一個數組,看起來像這樣 - (注意爲數組添加方括號)

"{ 
    \"renditions\": { 
     \"live\": \"true\", 
     \" type\": \"default\", 
     \"rendition\": [{ 
      \"name\": \"Live \", 
      \"url\": \"http: //mysite\" 
     }] 
    } 
}" 

我想是這樣的,沒有工作:

$.ajax({ 
    url: 'myurl' 
}).done(function(response) { 
    var tmp; 
    if (!respose.renditons.rendition.isArray) { 
     tmp = respose.renditions.renditon; 
     respose.renditon = []; 
     respose.renditon.push(tmp); 
    } 
    $scope.Vdata = JSON.parse(response); 
    return $scope.$apply(); 
}); 

的反應有時會包括繪製對象作爲一個數組,所以我只需要轉換到一個數組中的情況下,它不是。

有人可以請幫我用正確的JavaScript將json對象轉換爲數組。最好修改我現有的代碼

+0

爲什麼你需要這個? –

+0

所以,你有一個單一的對象,你返回一個對象,但是你想把它作爲'Array'中的單個元素? – FSou1

+0

我需要這樣做,因爲在我看來Angular ng-repeat需要一個數組 – Milligran

回答

0

試試這個:

$.ajax({ 
    url: 'myurl' 
}).done(function(response) { 
    var json = JSON.parse(response); 
    if(!Array.isArray(json.renditions.rendition)) { 
     json.renditions.rendition = [json.renditions.rendition]; 
    } 
    return json; 
}); 

Fiddle demo(那種...)

+0

Rink !!!你是老闆!!! – Milligran

0

可以檢查的目的是使用this數組:

Object.prototype.toString.call(response.renditions.rendition) === '[object Array]' 

而且可以簡化轉換到一個數組 - 只是把它包裝成使用x = [x]數組:

if (Object.prototype.toString.call(response.renditions.rendition) !== '[object Array]') { 
    response.renditions.rendition = [response.renditions.rendition]; 
} 

Fiddle demo.

-1

添加數據類型JSON到你的Ajax文章。示例

$.ajax({type: "POST", 
     url: URL, 
     data: PARAMS, 
     success: function(data){ 
      //json is changed to array because of datatype JSON 
       alert(data.renditions); 
      },    
     beforeSend: function (XMLHttpRequest) { 
      /* do something or leave empty */ 
     }, 
      complete: function (XMLHttpRequest, textStatus) { /*do something or leave empty */ }, 
     dataType: "json"} 
     ); 
+0

投了下來?嗯 –