使用 JSON 时如何让 ServiceStack 用破折号格式化 Guid?
Posted
技术标签:
【中文标题】使用 JSON 时如何让 ServiceStack 用破折号格式化 Guid?【英文标题】:How to get ServiceStack to format Guids with dashes when using JSON? 【发布时间】:2012-04-04 03:39:33 【问题描述】:使用 ServiceStack 从 Post 中返回一个简单的 User 对象。
用户对象非常简单:
public class User
public Guid Id get; set;
public string Username get; set;
发帖方式:
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?
【问题讨论】:
【参考方案1】:您可以将您的 Guid 序列化程序覆盖为
ServiceStack.Text.JsConfig<Guid>.SerializeFn = guid => guid.ToString();
【讨论】:
仅供参考,您需要覆盖 Guid 吗?如果您希望为可为空的 Guid 进行相同的序列化。 使用 ToString("D") 更好,msdn.microsoft.com/en-us/library/97af8hh4.aspx @LiuPeng:Guid?
没有ToString(string format)
(任何Nullable<T>
)以上是关于使用 JSON 时如何让 ServiceStack 用破折号格式化 Guid?的主要内容,如果未能解决你的问题,请参考以下文章
ServiceStack 文本设置以在反序列化 json 时推断原始值类型
使用 ServiceStack JsonSerializer 的 DataTable JSON 序列化
更改 ServiceStack.Text JSON 反序列化器的输出