2015-08-28 50 views
1

我遇到了POST rest rest調用的不同後端處理的一些麻煩。我有兩個不同的對象,它們通過後端的兩種不同的POST方法進行更新。我趕上對象爲一JsonNode,爲了解析,我需要更新的屬性,我創建一個迭代器,像這樣:適當的json到後端post調用

final Iterator<String> fieldNames = attributes.fieldNames(); 

問題是當我從角送我的數據,在一個情況下,我需要明確地發送它像angular.toJson(數據),以便正確抓住所有的字段名稱,在另一種情況下,我只是發送數據(沒有角度JSON轉換)。爲什麼會發生這種行爲?這是否與我創建$ http post調用有關?下面是從角的兩個不同的調用:

$http.post(URL, angular.toJson(data)).success(function(data){ 
/*whatever*/ }).error(function(data) { 
/*whatever*/ }); 

//Second call looks like this 
var promise = $http({method: 'POST', url:URL, data:data, cache:'false'}); 
//this one i resolve using $q.all 

我截斷的代碼只是重要的東西。我的數據(以跳過的toJSON需要嘗試多種方式),這樣當前創建:

var data = "{\"Attribute1:\"+"\""+$scope.value1+"\","+ 
      "\"Attribute2:\"+"\""+$scope.value2+"\"}"; 

如何,我需要爲了發送JSON數據,它正確地轉換爲JsonNode我後端,所以我可以正確迭代fieldNames?

+0

這些情況取決於數據變量的外觀?例如。有時候數據是一個字符串,有時候它是一個js字典? – ShaharZ

+0

從我所看到的,即使它是一個js字典,行爲也是一樣的。 –

回答

0

我確實設法找到了一個在我的後端正確使用json的通用解決方案。我宣佈我的JSON對象的角度是這樣的:

$scope.dataToSend = { 
    "SomeAttribute" : "", 
    "SomeOtherAttribute" : "" 
}; 

,然後添加像這樣我的價值觀:

$scope.dataTosend.SomeAttribute = someValue; 
$scope.dataTosend.SomeOtherAttribute = someOtherValue; 

不再需要與angular.toJson發送數據()。