dsc*_*bak 12 .net json json.net
我有这样的json
{
"name": "somenameofevent",
"type": "event",
"data": {
"object": {
"age": "18",
"petName": "18"
},
"desct": {
}
}
}
Run Code Online (Sandbox Code Playgroud)
我有2个像这样的对象
public class CustEvent
{
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("type")]
public string EventType{ get; set; }
[JsonProperty("data")]
public SomeData Data{ get; set; }
}
public class SomeData
{
[JsonProperty("object")]
public String SomeObject { get; set;}
[JsonProperty("dsct")]
public String SomeDesct { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我用来解析json对象Newtonsoft.NET库.以及如何将RAW JSON转换为SomeObject,SomeDesct属性?在JSON中,"data.object ..."是复杂的对象,我想只获得RAW JSON String到这些属性.你能帮助我吗 ?
cha*_*rit 19
您不需要编写任何转换器,只需使用以下JRaw类型:
public class SomeData
{
[JsonProperty("object")]
public JRaw SomeObject { get; set;}
[JsonProperty("dsct")]
public JRaw SomeDesct { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以通过检查.Value属性来访问原始值:
var rawJsonDesct = (string)data.SomeDesct.Value;
Run Code Online (Sandbox Code Playgroud)
如果要保留string签名,只需将JSON序列化为隐藏属性,并在访问者调用中进行字符串转换.
您必须编写一个自定义转换器类(从派生Newtonsoft.Json.JsonConverter),该类指示反序列化器读取整个对象并返回该对象的JSON字符串。
然后,您必须使用JsonConverter属性装饰属性。
[JsonConverter(typeof(YourCustomConverterClass))]
public string SomeObject { get; set; }
Run Code Online (Sandbox Code Playgroud)
网上有很多很好的教程,介绍如何创建自定义转换器,但是-为您方便起见,转换器的核心可能如下所示:
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
return JObject.Load(reader).ToString();
}
Run Code Online (Sandbox Code Playgroud)
此方法读取完整的JSON对象,但以字符串形式返回对象的序列化版本。这会产生一些开销,因为将对象反序列化为a JObject,然后再次进行序列化,但是对我来说,这是最简单的方法。也许您有一个更好的主意。
| 归档时间: |
|
| 查看次数: |
8189 次 |
| 最近记录: |