2017-09-02 63 views
2

我从c# object创建javascript object并且其中一个属性是对js function的引用,但是当序列化该对象时,该值具有引号围绕它,使其成为普通字符串并且不是功能。 这是当前输出:C#序列化到JS对象没有引用一些值

{ "x": "functionNameToBeCalled" } 

但我需要它像

{ "x": functionNameToBeCalled } 

反正是有与Json.Net做到这一点还是我必须创建JS手动反对呢?

我试过使用JsonPropertyAttribute,但无法弄清楚要设置哪个属性!

+0

手动创建您自己的序列化方法。 – Valkyrie

+1

由于您使用的是Json.NET,这似乎是[如何序列化原始json字段?](https://stackoverflow.com/q/15661529/3744182)的副本。将'[JsonConverter(typeof(PlainJsonStringConverter))]'放在属性的值应该被序列化为一个未加引号的原始字符串。 – dbc

回答

1

变化呼唤你的方法,像这样的方式:

window.z= function(){ console.log('hi');} 
var b = { a: 'z'} 
window[b.a](); 

所以没有必要改变JSON序列化的行为。

+0

是的,因为'{“x”:functionNameToBeCalled}'无效JSON – sniels

+0

不能更改调用者,它的第三方组件。 – Exlord