JSON没有反序列化某些值

问题描述 投票:-1回答:1

我有一个基类(用于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": [
        {}
    ],

任何想法为什么该领域不会填充?没有生成错误。所有其他(简单)值都可以填充。

我已经尝试更改TypeValue的情况以匹配JSON字符串,并且还尝试在创建对象时显式创建List<SignInName>,但无济于事。

c# json
1个回答
4
投票

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
© www.soinside.com 2019 - 2024. All rights reserved.