我从REST服务接收以下Json字符串作为输出:
"CategoryDtls":
{
"category": "S",
"msgType": "0",
"sourceId": "21999"
}
我希望使用Json.net将其转换为C#对象
public partial class CategoryDtls
{
private TestChar categoryField;
public TestChar category
{
get
{
return categoryField;
}
set
{
if (value == null)
{
categoryField = null;
}
var stringValue = Convert.ToString(value);
var charClass = new TestChar();
charClass.SimpleChar = stringValue;
categoryField = charClass;
}
}
public string msgType { get; set; }
public string sourceId { get; set; }
}
public partial class TestChar : object, System.ComponentModel.INotifyPropertyChanged
{
private string simpleCharField;
public string SimpleChar
{
get
{
return this.simpleCharField;
}
set
{
this.simpleCharField = value;
this.RaisePropertyChanged("SimpleChar");
}
}
public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
protected void RaisePropertyChanged(string propertyName)
{
System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
if ((propertyChanged != null))
{
propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
}
}
}
这样做时,我会收到类似的错误
{"Could not cast or convert from System.String to JsonParser.TestChar."}
我试图为上述的Category属性自定义set方法,但无法解决。我无法更改Json字符串。无论如何,我可以解决此问题。
您可以创建自定义CategoryConverter
并通过[JsonConverter(typeof(CategoryConverter))]
在您的上方进行声明来使用它public TestChar category
。
public class CategoryConverter : JsonConverter
{
// Declared as abstract in JsonConverter so must be overridden
public override bool CanConvert(Type objectType) { return true; }
// Declared as abstract in JsonConverter so must be overridden
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { }
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
return JToken.Load(reader).ToObject<TestChar>();
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句