public class Employee
{
publlic string FullName { get; set; }
[JsonIgnore]
public List<abc> Abc { get; set; }
}
は、どのように私はそれにJsonIgnore
を有しているにも関わらず、プロパティAbc
を含めることができていているプロパティを含めますか?は、オブジェクトをデシリアライズするときJsonIgnore
public class Employee
{
publlic string FullName { get; set; }
[JsonIgnore]
public List<abc> Abc { get; set; }
}
は、どのように私はそれにJsonIgnore
を有しているにも関わらず、プロパティAbc
を含めることができていているプロパティを含めますか?は、オブジェクトをデシリアライズするときJsonIgnore
シリアル化されたデータがAbc
というプロパティーを持っている場合(逆シリアル化したいので)、[JsonIgnore]
属性を持たない別のクラスを作成し、そのクラスとしてJSONを逆シリアル化します。
Employee
クラスを使用していて、その属性が存在する限り、シリアライザはその属性に従います。それがそこにあるのです。
絶対にEmployee
クラスである必要があり、属性を削除できない場合は、それを「その他の」クラスとして逆シリアル化し、それを使用してEmployee
のインスタンスを作成します。
var employeeWithAbc = JsonConvert.DeserializeObject<EmployeeWithAbc>(json);
var employee = new Employee {
FullName = employeeWithAbc.FullName,
Abc = employeeWithFullName.Abc }
ただし、間違った問題が考えられます。なぜあなたはその物件に[JsonIgnore]
を持っていますか?
の権利?私はそのようなシナリオを試みましたが、同じプロパティでは受け入れられません。 – PongPagong
部分クラスではなく、ただ別のクラスです。シリアライザは、正しいプロパティを持っている限り、それがクラスであるかどうかは気にしません。クラスのインスタンスを作成し、それをJSON内のものに移入するだけです。 'Employee'のインスタンスが必要な場合は、逆シリアル化した別のクラスを使用して、' Employee'の新しいインスタンスを作成することができます。 –
jsonignoreを追加しました。なぜなら、私は子コレクションオブジェクトを取得したくないからです。 – PongPagong
あなたのEmployee
クラスに多くの属性がある場合、Scottさんのアドバイスに従って、別の部分クラスを作成することができます(自分自身を繰り返さず、必要以上に作業をしないようにする)。私。
public class Employee
{
public string name
{
get;
set;
}
}
をそして、あなたはその後、Employee
のプロパティ/属性を継承するEmployee
の派生クラスを作成して、他の特定のシリアライズ/ deserialiseクラスを作成することができます。次のようにあなたのベースクラスEmployee
を持つことができ
public class ParseEmployee : Employee
{
public public List<abc> Abc
{
get;
set;
}
}
私はあなたのポイントとアレックスを得るが、よりエレガントな方法を探して... – PongPagong
あなたのデザインを再考する必要があるような気がします。部分クラスのような – Casey