将数据类型自定义为JSON

本文关键字:JSON 自定义 数据类型 | 更新日期: 2023-09-27 18:22:08

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

而不实际将任何属性公开。

我该如何做到这一点?

将数据类型自定义为JSON

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

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

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