我刚刚使用JsonFx实现了一个JSON编解码器。它是这样的:
using System.IO;
using System.Text;
using JsonFx.Json;
namespace Example
{
[global::OpenRasta.Codecs.MediaType("application/json")]
public class JsonFXCodec : global::OpenRasta.Codecs.IMediaTypeWriter, global::OpenRasta.Codecs.IMediaTypeReader
{
public void WriteTo(object entity, global::OpenRasta.Web.IHttpEntity response, string[] codecParameters)
{
JsonWriter json = new JsonWriter();
using (TextWriter w = new StreamWriter(response.Stream, Encoding.UTF8))
{
json.Write(entity, w);
}
}
public object ReadFrom(global::OpenRasta.Web.IHttpEntity request, global::OpenRasta.TypeSystem.IType destinationType, string destinationName)
{
JsonReader json = new JsonReader();
using (TextReader r = new StreamReader(request.Stream, Encoding.UTF8))
{
return json.Read(r, destinationType.StaticType);
}
}
public object Configuration { get; set; }
}
}
如果注册了“对象”,那么它似乎对任何类工作:
ResourceSpace.Has.ResourcesOfType<object>()
.WithoutUri
.TranscodedBy<JsonFXCodec>();
想分享您的实施,使每个人都可以使用它呢?这似乎是一个常见的用例,尤其是在使用允许动态JSON对象的REST API时,您无法指定类文件。你是OpenRasta的作者,对吧?我想你会找到一些地方把它放在网上... :) P.S.你的答案是:“OpenRasta没有内置的东西”,对吗? –
这个周末我可以推开包装,确实很简单。可能也值得一篇博文。你可以在OpenRasta中使用的技巧之一是没有URI的资源的注册遵守继承,所以如果你注册
那太棒了。在你遇到它的情况下,请将其添加到你的答案中。 –