JavaScriptSerializer:如何将枚举序列化为JSON字符串而非数字?
大家好!我是一名C#初学者开发者,正在用ASP.NET Web Forms(老派技术,但项目是遗留系统)编写一个小型Web应用。我使用`JavaScriptSerializer`将对象序列化为JSON,以便发送到客户端。
有一个这样的类:
```csharp
public class User
{
public string Name { get; set; }
public UserRole Role { get; set; }
}
public enum UserRole
{
Admin,
Moderator,
User
}
```
我创建对象并序列化它:
```csharp
var user = new User { Name = "伊万", Role = UserRole.Admin };
var serializer = new JavaScriptSerializer();
string json = serializer.Serialize(user);
Console.WriteLine(json);
```
输出结果是:`{"Name":"伊万","Role":0}`。
问题在于`Role`被序列化为数字(0, 1, 2),而我需要的是字符串值,例如`"Admin"`。在客户端需要这个来保证可读性和比较。
我知道在现代的`System.Text.Json`或`Newtonsoft.Json`中有像`[JsonConverter(type`这样的属性。