私は2つのコードを持っています
コード1
string json = @"{""properties"":{""name"":""carl""}}";
try
{
MemoryStream stream = GetMemoryStreamFromString(json);
Type type = typeof(Person);
DataContractJsonSerializer serializer = new DataContractJsonSerializer(type);
object obj = serializer.ReadObject(stream);
Debug.WriteLine(obj);
Person person = obj as Person;
}
catch (Exception ee)
{
Debug.WriteLine(ee.Message);
}
//And my classes
[DataContract]
public class Person
{
[DataMember]
public Property properties { set; get; }
public Person() { }
}
[DataContract]
public class Property
{
[DataMember]
public string name { set; get; }
public Property() { }
}
コード 2
string json = @"{""properties"":{""name"":""carl""}}";
try
{
MemoryStream stream = GetMemoryStreamFromString(json);
Type type = typeof(Person);
DataContractJsonSerializer serializer = new DataContractJsonSerializer(type);
object obj = serializer.ReadObject(stream);
Debug.WriteLine(obj);
Person person = obj as Person;
}
catch (Exception ee)
{
Debug.WriteLine(ee.Message);
}
//And my class
[DataContract]
public class Person
{
[DataMember]
public Dictionary<string,string> properties { set; get; }
public Person() { }
}
Code1 は正常に動作しますが、Code2 は例外です。ここにログがあります
メンバー 'プロパティ' が公開されていないため、データ コントラクト型 'ScrollViewExample.Person' を逆シリアル化できません。メンバーを公開すると、このエラーが修正されます。または、内部メンバーのシリアル化を有効にするために、アセンブリを内部にし、InternalsVisibleToAttribute 属性を使用することもできます。詳細については、ドキュメントを参照してください。これを行うと、特定のセキュリティ上の影響があることに注意してください。
ここでの問題はproperties
、キーを持つことができる構造が定義されていないため、クラスを定義できないことです。問題があり、調査した結果、辞書を解析できないことがわかったため、この質問を投稿しています。だから私はあなたがあなたの入力を与えることができるように、私の問題をより単純なものに組み立てています