Seb*_*ten 3 c# json.net asp.net-web-api2
我正在使用Newtonsoft Json序列化(使用Web API 2).
我的类中的一个公共属性是一个包含JSON数据的String.我想序列化我的类,并包含这个公共属性,但我不希望序列化程序处理/修改此字符串的内容.
有什么方法可以包含这个属性,但不要弄乱它的内容吗?
您可以创建一个JsonConverter
将字符串属性的原始值写入输出而不更改它.您负责确保字符串具有有效的JSON,否则结果输出也不是有效的JSON.
以下是转换器的外观:
class RawJsonConverter : JsonConverter
{
public override bool CanConvert(Type objectType)
{
return (objectType == typeof(string));
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
// write value directly to output; assumes string is already JSON
writer.WriteRawValue((string)value);
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
// convert parsed JSON back to string
return JToken.Load(reader).ToString(Formatting.None);
}
}
Run Code Online (Sandbox Code Playgroud)
要使用它,请使用如下属性标记您的JSON属性[JsonConverter]
:
class Foo
{
...
[JsonConverter(typeof(RawJsonConverter))]
public string YourJsonProperty { get; set; }
...
}
Run Code Online (Sandbox Code Playgroud)
这是一个演示:https://dotnetfiddle.net/BsTLO8
归档时间: |
|
查看次数: |
1579 次 |
最近记录: |