我剛剛使用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的資源的註冊遵守繼承,所以如果你註冊
那太棒了。在你遇到它的情況下,請將其添加到你的答案中。 –