0
上で動作するようにJSON DeserializeObjectを取得私はJson.Netを使用して、以下のクラスをデシリアライズしようとしているとエラーが発生します:トラブルこのクラス
Error converting value "abc" to type 'System.UInt16'. Path 'typestr'
public class TestClass
{
[JsonIgnore]
public static ushort TEST_TYPE_A = 0;
[JsonIgnore]
public static ushort TEST_TYPE_B = 1;
[JsonProperty("typestr")]
public string typestr {get; set;}
[JsonProperty("testvalue")]
public string testvalue {get; set;}
[JsonProperty("bob")]
public string bob {get; set;}
public TestClass(ushort typestr)
{
this.typestr = types[typestr];
}
public void Init() { }
}
TestClass a = JsonConvert.DeserializeObject<TestClass>("{\"typestr\": \"abc\"}");
このエラーを回避する方法を誰もが知っていますか?
あなたが提供したコードは、例外をスローしません。少なくとも、Json.NET v10.0.3を使用しているマシンではありません。私の推測では、実際のコードを短くて完全な例にコピーしようとしましたが、それは問題が再現されていることを確認することなく(悪いです)。本物の[mcve]を提供してください。 –
コンストラクタの宣言が更新され、エラーになりました。 – user740521
これは、「typestr」という名前の「ushort」を受け入れるだけでなく、「typestr」という名前の「string」プロパティを持つことから始めるのは非常に紛らわしいものです。おそらくJson.NETはコンストラクタを呼び出そうとしていますが、あなたは 'ushort'の代わりに文字列を与えています。その型の衝突を避けることはできませんか?パラメータの名前を変更するだけでも十分です。 –