0
各オブジェクトが別のタイプのオブジェクトのプロパティを持つオブジェクトのリストを(JSON形式で)シリアル化したいと思います。上記のコメントのようネストされたクラスのシリアル化
public class MyJson{
public MyJson(){
var list = new List<Person>{ /* added a bunch of person here */ };
var serializer = new JavaScriptSerializer();
string json = serializer.Serialize(list);
// serialization works fine
var desList = serializer.Deserialize<IList<Person>>(json);
// the deserialization doesn't properly deserialize Address property.
}
}
、直列化が正常に動作しますが、直列化復元が正常にアドレスをデシリアライズしません:
[DataContract]
public class Person{
[DataMember]
public string Name { get; set; }
[DataMember]
public Address FullAddress { get; set; }
}
[DataContract]
public class Address {
private readonly byte[] _foo;
private ulong _value;
public byte[] Foo { get { return (byte[]) _foo.Clone(); }}
public ulong Value { get { return _value; } set { return _value; }}
public Address(byte [] bytes){
_foo = new byte[bytes.Length];
Array.Copy(bytes, _foo, bytes.Length);
foreach(byte b in _foo){
_value |= b; // I do some bit manipulation here and modify the _value
}
}
public MacAddress() // added this otherwise I get an exception
{
}
}
これは私がシリアライズとデシリアライズてる方法です:これは私がこれまで持っているものです。 値が(期待通りですが)Foo(私にはセッターがないことがわかりますが何らかの理由でセッターを置けない場合はどうしますか?
私はここで何が欠けていますか?
あなたは正しいですが、Fooのセッターが働いています。しかし、セッターの不在の場合にそれを動作させる他の方法があるかどうか疑問に思っています。 – ashokgelal