2016-10-28 97 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'的组合函数,以便我所有其他事务也可以完美工作。 –

相关问题