javascript - JSON.NET 属性作为 Javascript 函数

标签 javascript c# serialization json.net

我有一个像这样的 C# 类

public class Person
{
  string firstname {get; set;}
  string lastname {get; set;}
  string onRenderFunction {get; set;}
}

然后我像这样设置类:

var superman = new Person
{ 
    firstname = "Clark",
    lastname = "Kent",
    onRenderFunction = "renderPersonComplete"
}

我想要的是将“onRenderFunction”序列化为方法 - 而不是字符串。像这样;

{ 
  "firstname": "Clark",
  "lastname": "Kent",
  "onRenderFunction": renderPersonComplete
}

因此,当通过 Ajax 调用返回序列化对象并将其提供给能够调用函数“onRenderFunction”的插件时,该插件将看到该函数已设置并调用如下所示的函数设置:

var renderPersonComplete = function() {
   alert('do something on render complete');
};

如何设置 JSON.NET 来序列化 Person 类来执行此操作?

最佳答案

您必须进行一些额外的处理才能将函数分配给属性,因为 JSON 根据定义只是基元的键值对,它不知道函数。

最初,来自 ajax 的数据将如下所示:

var data = { 
  "firstname": "Clark",
  "lastname": "Kent",
  "onRenderFunction": "renderPersonComplete"
}

假设您在 window 范围内有一个名为 renderPersonComplete 的函数:

window.renderPersonComplete = function() {
   alert('do something on render complete');
};

现在您必须修改数据才能分配函数:

data.onRenderFunction = window[data.onRenderFunction] // This assigns the function to onRenderFunction  property.

该函数的名称由服务器端根据您的逻辑决定。

关于javascript - JSON.NET 属性作为 Javascript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27757135/

相关文章:

javascript - RxJS 减少一个 ReplaySubject

javascript - 在 javascript 中使用 Google Contact API 添加联系人

c# - 调试时如何将 Visual Studio 异常消息语言更改为英语

mysql - 反序列化 pdo mysql 错误 - 数据源名称无效

javascript - 需要一个 jQuery 表单反序列化器

javascript - 如何将变量传递给 .innerHTML

c# - 如何使用angularjs在c#中调用API

c# - 在 .NET 标准项目中使用 .NET 分析器启用所有规则

java - 值未传递给 Controller

Javascript 数组效率低于 C++ 中的数组