无法从获取的内容自动生成 C# 对象 json

Can't auto-generate C# object from fetched json

我已经查看了许多其他帖子,解决方案总是相同的,但它对我不起作用,所以我开始了。

我有以下 HttpClient 获取 JSON 字符串并将其存储在变量中。

JSON

{"visiteur":{"id":"a17","nom":"Andre","prenom":"David","login":"dandre","mdp":"12e0b9be32932a8028b0ef0432a0a0a99421f745","adresse":"1 rue Petit","cp":"46200","ville":"Lalbenque","dateEmbauche":"1998-11-23","idTypeActeur":"2","oldMdp":"oppg5","mail":"david.andre@gsb.com","questionSecrete":"GSB","version":"0"}}

客户端

// url de récupération du json de l'acteur
            string urlActeur = "http://10.0.0.5/ppe3JoJuAd/gsbAppliFraisV2/webservices/w_visiteur.php" + "?" + "login=" + Login + "&" + "pass=" + Pass;

            //instanciation du client http qui envoi un header json
            HttpClient clientActeur = new HttpClient();
            clientActeur.DefaultRequestHeaders.Accept.Clear();
            clientActeur.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            //réponse à la requête Http
            var response = await clientActeur.GetAsync(urlActeur);
            var json = response.Content.ReadAsStringAsync().Result;
            var acteurJson = JsonConvert.DeserializeObject<ActeurJson>(json);

这里是 JSON 变量的内容:

{"visiteur":{"id":"a17","nom":"Andre","prenom":"David","login":"dandre","mdp":"12e0b9be32932a8028b0ef0432a0a0a99421f745","adresse":"1 rue Petit","cp":"46200","ville":"Lalbenque","dateEmbauche":"1998-11-23","idTypeActeur":"2","oldMdp":"oppg5","mail":"david.andre@gsb.com","questionSecrete":"GSB","version":"0"}}

所以它 确实 获取 JSON,并将其存储在变量中,但是查看我的 acteurJson 变量我得到一个 null 对象。

使用 json2csharp 验证:

public class Acteur
    {
        [JsonProperty("id")]
        public string id { get; set; }
        [JsonProperty("nom")]
        public string nom { get; set; }
        [JsonProperty("prenom")]
        public string prenom { get; set; }
        [JsonProperty("login")]
        public string login { get; set; }
        [JsonProperty("mdp")]
        public string mdp { get; set; }
        [JsonProperty("adresse")]
        public string adresse { get; set; }
        [JsonProperty("cp")]
        public string cp { get; set; }
        [JsonProperty("ville")]
        public string ville { get; set; }
        [JsonProperty("dateEmbauche")]
        public string dateEmbauche { get; set; }
        [JsonProperty("idTypeActeur")]
        public string idTypeActeur { get; set; }
        [JsonProperty("oldMdp")]
        public string oldMdp { get; set; }
        [JsonProperty("mail")]
        public string mail { get; set; }
        [JsonProperty("questionSecrete")]
        public string questionSecrete { get; set; }
        [JsonProperty("version")]
        public string version { get; set; }
    }

    public class ActeurJson
    {
        public Acteur Acteur { get; set; }
    }

我正在尝试从 JSON 变量中获取 JSON 以自动生成一个 Acteur 对象。我错过了什么?

JSON 数据为 {"visiteur":{...} }。要使 JsonConvert.DeserializeObject<ActeurJson> 正常工作,C# 属性 的名称需要与 JSON 对象中 属性 的名称相匹配:

public class ActeurJson
{
    public Acteur Visiteur { get; set; }
}

或者,您可以使用 JsonPropertyAttribute 覆盖 C# 的名称 属性:

public class ActeurJson
{
    [JsonProperty("visiteur")]
    public Acteur Acteur { get; set; }
}

你有 Acteur 和 ActeurJson 类,而字符串表示与 Acteur 匹配。如果将反序列化行更改为

var acteurJson = new ActeurJson() { Acteur = JsonConvert.DeserializeObject<Acteur>(json)};

应该可以解决你的问题。