我有一个基类(用于User
类的基础):
public abstract class UserB2C
{
…
public List<SignInName> SignInNames { get; set; }
…
}
public class SignInName
{
string Type { get; set; }
string Value { get; set; }
}
还有一些JSON包括:
\"signInNames\":[{\"type\":\"emailAddress\",\"value\":\"[email protected]\"}],
传递给:
JsonConvert.DeserializeObject<User>(json);
但是创建的对象(反序列化)具有:
"signInNames": [
{}
],
任何想法为什么该领域不会填充?没有生成错误。所有其他(简单)值都可以填充。
我已经尝试更改Type
和Value
的情况以匹配JSON字符串,并且还尝试在创建对象时显式创建List<SignInName>
,但无济于事。
SignInName
类的属性应声明为public
,以便用值反序列化。
public class SignInName
{
public string Type { get; set; }
public string Value { get; set; }
}
UPDATE
这是一个Minimal,Complete和Verifiable示例:
using Newtonsoft.Json;
using System.Collections.Generic;
class Program
{
static void Main(string[] args)
{
var json =
"{\"signInNames\":[{\"type\":\"emailAddress\",\"value\":\"[email protected]\"}]}";
var user = JsonConvert.DeserializeObject<User>(json);
System.Console.WriteLine(JsonConvert.SerializeObject(user));
}
}
public abstract class UserB2C
{
public List<SignInName> SignInNames { get; set; }
}
public class User : UserB2C { }
public class SignInName
{
string Type { get; set; }
string Value { get; set; }
}
输出是{"SignInNames":[{}]}
如果我们使qazxsw poi类属性qazxsw poi输出将是:
SignInName