![](/img/trans.png)
[英]Json.Net: Serialize/Deserialize property as a value, not as an object
[英]json Serialize/Deserialize property "object" with primitive .net types
我有一堂课
public class DataValue
{
public object Value { get; set; }
}
值存储一个内置类型。 在下面的示例中,它是ushort ,但它可以是任何原始类型。
[Fact]
public void DatapointValueTestNewtonsoft()
{
var dataValue = new DataValue
{
Value = (ushort) 12
};
var jsonTypeNameAll = JsonConvert.SerializeObject(dataValue, Formatting.Indented, new JsonSerializerSettings
{
TypeNameHandling = TypeNameHandling.All,
ContractResolver = new CamelCasePropertyNamesContractResolver()
});
var dataValueDeserialized = JsonConvert.DeserializeObject<DataValue>(jsonTypeNameAll);
}
我看不出有任何意义,将 json 反序列化为我不知道的类型,它与 anonymos 对象相同。 我无法想象我如何使用它。 幸运的是,C# 有泛型,这要好得多。
你必须添加一个泛型类
public class DataValue : DataValue<object> { }
public class DataValue<T>
{
public T Value { get; set; }
}
代码
static void Main(string[] args)
{
var dataValue = new DataValue
{
Value = 12
};
var jsonTypeNameAll = JsonConvert.SerializeObject(dataValue, Newtonsoft.Json.Formatting.Indented,
new JsonSerializerSettings
{
TypeNameHandling = TypeNameHandling.All,
ContractResolver = new CamelCasePropertyNamesContractResolver()
});
var dataValueDeserialized = JsonConvert.DeserializeObject<DataValue<ushort>>(jsonTypeNameAll);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.