servicestack,guid,C#,Json,servicestack,Guid" /> servicestack,guid,C#,Json,servicestack,Guid" />

C# 如何让ServiceStack在使用JSON时使用破折号格式化GUID?

C# 如何让ServiceStack在使用JSON时使用破折号格式化GUID?,c#,json,servicestack,guid,C#,Json,servicestack,Guid,使用ServiceStack从Post返回简单的用户对象 用户对象非常简单: public class User { public Guid Id { get; set; } public string Username { get; set; } } post方法: public override object OnPost(User user) { User newUser; // Do stuff to user... return newUser

使用ServiceStack从Post返回简单的用户对象

用户对象非常简单:

public class User
{
    public Guid Id { get; set; }
    public string Username { get; set; }
}
post方法:

public override object OnPost(User user)
{
    User newUser;
    // Do stuff to user...
    return newUser;
}
我的问题是ServiceStack不带破折号地格式化Guid,因此JSON响应如下所示:

{"id":"c884ce020ec94c65a8788c2ddc500434","username":"new user name"}
客户端是Android/Java客户端,UUID.fromString()方法确实对这种格式感到不安


有没有办法强制ServiceStack返回用破折号格式化的Guid?

您可以将Guid序列化程序重写为

ServiceStack.Text.JsConfig<Guid>.SerializeFn = guid => guid.ToString();
ServiceStack.Text.JsConfig.SerializeFn=guid=>guid.ToString();

FYI,您需要覆盖Guid吗?同样,如果您希望对可为null的Guid进行相同的序列化。更好地使用ToString(“D”)。@LiuPeng:对于
Guid?
(任何
null
),没有
ToString(字符串格式)