自定义数据类型为JSON

时间:2014-09-17 13:45:26

标签: c# json custom-data-type

我有自定义数据类型类,我希望.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}}

没有实际公开任何属性。

我将如何实现这一目标?

1 个答案:

答案 0 :(得分:0)

WebApi正在使用Json序列化程序来获取结果,当您希望它在其上执行ToString()时。

我个人在序列化对象时没有处理过很多私有变量(或属性),但是,我这样做并没有让我感到惊讶。

为了获得所需的结果,您需要公开一个返回!!!<whatever text>!!!的属性。