私は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で使用できるトリックの1つは、URIを持たないリソースの登録が継承を尊重していることです。
それは素晴らしいだろう。あなたはあなたの周りに回って、あなたの答えにもそれを加えてください。 –