2016-10-28 142 views
1

我正在使用Angular資源進行ajax調用。我有一個更新交易,其中我從數據庫中獲取數據,同時獲取數據的數據是這樣的: This is browser console when i am getting data from serverAngularjs將json數據轉換爲「[object Object]」

現在向此對象的空字段添加數據後,我再次將其發送到服務器,之前發送到服務器的數據正在變成這樣的不同形式: enter image description here

可能的原因是什麼?我已經使用JSON.parse();但它不起作用。

- 編輯 -

這是我在哪裏轉換子對象轉換爲字符串代碼

  var serverResp = res.data; 
      $scope.importLC.main.customerName = serverResp.customerName; 
      $scope.importLC.main.customerAddress1 = serverResp.customerAddress1; 
      $scope.importLC.main.customerAddress2 = serverResp.customerAddress2; 
      $scope.importLC.main.customerAddress3 = serverResp.customerAddress3; 
      $scope.importLC.main.issueDate = $filter('date')(new Date(), 'dd-MM-yyyy'); 

      serverResp = $scope.importLC; 

      angular.forEach(serverResp, function (value, key) { 
       angular.forEach(serverResp[key], function (v, k) { 
        if (typeof serverResp[key][k] === 'object') { 
         angular.forEach(serverResp[key][k], function (v1, k1) { 
          serverResp[key][k][k1] = String(serverResp[key][k][k1]); 
         }); 
        } else { 
         serverResp[key][k] = String(serverResp[key][k]); 
        } 
       }); 
      }); 

      $scope.importLC = serverResp; 

我要值到字符串,但整個對象轉換得到轉換成字符串。

- 編輯 -

我爲什麼數據轉換點,實際上將數據發送到服務器我對數據應用驗證,但驗證文件只接受字符串值,所以我需要轉換前數據轉換爲字符串,這裏是在同一個地方的代碼

 //Convert object to string 
     function convertObjectToStringSingleObject(data) { 
      Object.keys(data).forEach(function (key) { 
       data[key] = String(data[key]); 
      }); 
      return data; 
     } 

我多了一個功能:

//Convert object to string 
    function convertObjectToStringMultiLevelObject(data) { 
     Object.keys(data).forEach(function (key) { 
      Object.keys(data[key]).forEach(function (key1) { 
       data[key][key1] = String(data[key][key1]); 
      }); 
     }); 
     return data; 
    } 

現在,如果我使用convertObjectToStringMultiLevelObject函數,那麼我的代碼工作正常,但是我的一些其他事務需要convertObjectToStringSingleObject。有什麼辦法可以結合這兩個函數(convertObjectToStringSingleObjectconvertObjectToStringMultiLevelObject),並且組合函數應該足夠智能地捕獲對象的類型,我的意思是它可以是單層或多層次的json對象。

+1

顯示一些相關的javascript –

+0

將對象轉換爲字符串會產生'[object Object]'。這可能會有多種原因。我們需要查看更多的代碼來精確確定要將子對象轉換爲字符串的哪一點。 – Amadan

回答

0

對這個函數做了一些R & D我創建了一個組合函數,允許我將對象(不同級別的對象)的值轉換爲字符串,在我的情況下,對象的最大深度級別是2,所以函數將是這樣的:

function convertObjectToString(data) { 
     Object.keys(data).forEach(function (key) { 
      if (data[key] && typeof data[key] === 'object') { 
       Object.keys(data[key]).forEach(function (key1) { 
        data[key][key1] = String(data[key][key1]); 
       }); 
      } else if (data[key] && typeof data[key] === 'string' || typeof data[key] === 'number') { 
       data[key] = String(data[key]); 
      } else { 
       data[key] = ""; 
      } 

     }); 
     return data; 
    } 

我實現我想要的,因爲我瞭解我的近況對象的深層次,但我會永遠歡迎的功能,這將能夠檢查深層次的,可以作出相應的反應。謝謝。

0

雖然轉換對象爲字符串使用以下功能

var str = JSON.stringify(obj); 

,並同時從字符串化的對象轉換爲JavaScript對象使用

var obj = JSON.parse(str); 

編輯

使用JSON.stringify如果該值對象

function convertObjectToStringSingleObject(data) { 
     Object.keys(data).forEach(function (key) { 
      if (typeof data[key] === "object") { 
       data[key] = JSON.stringify(data[key]); 
      } else { 
       data[key] = String(data[key]); 
      } 

     }); 
     return data; 
    } 
+0

我不想將整個對象轉換爲字符串,我只是想將**值**轉換爲字符串。 –

+0

你正在轉換的值是對象,這就是爲什麼它是「[object object]」。 – murli2308

+0

是的,但如果我使用'convertObjectToStringMultiLevelObject'函數然後代碼工作正常,現在我唯一的問題是我想'convertObjectToStringMultiLevelObject'和'convertObjectToStringSingleObject'的組合函數,以便我所有其他事務也可以完美工作。 –

相關問題