JSONデータにJSONデータが含まれていると伝えることはできますか?例えば。私はこのようなクラスている:JSON.NET:JSONオブジェクトへのjson文字列プロパティのシリアル化
私はこのようなシリアル化する必要var foo = new Foo();
foo.Id = 5;
foo.RawData = @"{""bar"":42}";
:私はこのような使用
public class Foo
{
public int Id;
public string RawData;
}
基本的に私は、非構造化の一片を
{"Id":5,"RawData":{"bar":42}}
を持っていますJSONとして既に格納されている可変長データを使用するには、このデータを一部として保持するために完全にシリアル化されたオブジェクトが必要です。
ありがとうございました。
EDIT:正しく理解されているかどうかを確認するために、これは一方向のシリアル化です。つまり、同じオブジェクトにデシリアライズする必要はありません。他のシステムはこの出力を処理する。私はRawDataの内容が単なる文字列ではなくJSONの一部である必要があります。あなたが使用する場合、次に
public class Foo
{
public int Id;
[JsonConverter(typeof(RawJsonConverter))]
public string RawData;
}
:
はpublic class RawJsonConverter : JsonConverter
{
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
writer.WriteRawValue(value.ToString());
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
throw new NotImplementedException();
}
public override bool CanConvert(Type objectType)
{
return typeof(string).IsAssignableFrom(objectType);
}
public override bool CanRead
{
get { return false; }
}
}
そして、それをあなたのクラスを飾る:
を参照してください
JRaw
を使用すると、よりsutableとcomapct解決策になる可能性があること、可能であるはい、それは可能ですが、あなたはあなたが必要とする出力が正確に何である私に言うことができますか?現在は:{"ID":5、 "RawData": "{\" bar \ ":42}"} –@リバーズ、これは私が必要とするものです。私はJSONコンテンツを持つ文字列プロパティを持っています。JSONコンテンツを直列化してJSONに戻すのは無駄です。 – port443
@リバーズ、申し訳ありませんが、私はあなたの例を十分に読んでいませんでした。あなたのケースでは、JSONのRawDataの内容は文字列です。サブオブジェクトにする必要があります(つまり、バリアントに余分な引用符とバックスラッシュが追加されています)。 – port443