使用 stringify 时将未分配的 JSON 属性发送到服务器,即保留属性名称,无论 属性 值为 empty/null

Send unassigned JSON properties to server when using stringify i.e. retain properties name whether property value is empty/null

我有两个模型属性:

ng-model="category.name"    mandatory field
ng-model="category.desc"    optional

这就是我向服务器发送数据的方式 (ASP.net)

var rdt = "{'dt':" + JSON.stringify($scope.category) + "}";

但是,如果可选的 属性 具有未分配的值,则服务器端找不到 属性 名称并给出错误。有什么方法可以保留 JSON 的未分配属性?

您有几种解决方案:

  • 解决方案 1:初始化范围内的变量,例如:

$scope.category.desc = null
  • 解决方案 2:创建一个函数来解决这个问题

function ToJson(object, properties) {
   var result = {};
   for(var i = 0; i < properties.lenght; i++) {
      var property = properties[i];
      if(!object[property]) {
         result[property] = null;
      } else {
         result[property] = object[property];
      }      
   }

  return JSON.stringify(result);
}

// And then use it like this:
var rdt = "{'dt':" + ToJson($scope.category, ["name", "desc"]) + "}";