我有自定义数据类型类,我希望.NET转换为JSON(后来又返回到CustomDataType)。
我知道没有任何特殊定义的类将被转换为对象,只需序列化所有公共属性即可。但这不是我需要的。
我们假设我有一个班级
public class MyString : System.Object {
private string myString;
public MyString(string str) {
this.myString = str;
}
public override bool Equals(System.Object obj)
public override int GetHashCode()
public string ToString() {
return "!!!"+myString+"!!!";
}
}
现在,如果我在ApiController中使用此类型
public class MyItem {
public MyString someStr;
}
public class MyApiController : ApiController {
[HttpGet]
public MyItem MyApi() {
MyItem item = new MyItem();
item.someStr = new MyString("I have a dream");
return item;
}
}
我得到了
{"someStr":{}}
但我可能想要
{"someStr":"!!!I have a dream!!!"}
或
{"someStr":{"words":4,"chars":11,"length":14}}
没有实际公开任何属性。
我将如何实现这一目标?
答案 0 :(得分:0)
WebApi正在使用Json序列化程序来获取结果,当您希望它在其上执行ToString()
时。
我个人在序列化对象时没有处理过很多私有变量(或属性),但是,我这样做并没有让我感到惊讶。
为了获得所需的结果,您需要公开一个返回!!!<whatever text>!!!
的属性。