Ответ 1
Для этого вам нужен конвертер, вот пример:
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; }
}
}
Затем украсьте свой класс:
public class Foo
{
public int Id;
[JsonConverter(typeof(RawJsonConverter))]
public string RawData;
}
Затем, когда вы используете:
var json = JsonConvert.SerializeObject(foo,
new JsonSerializerSettings());
Console.WriteLine (json);
Это ваш результат:
{"Id":5,"RawData":{"bar":42}}
Надеюсь, поможет
Изменить: я обновил свой ответ для более эффективного решения, предыдущий заставил вас сериализовать, чтобы затем десериализовать, это не так.