无法从获取的内容自动生成 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)};
应该可以解决你的问题。
我已经查看了许多其他帖子,解决方案总是相同的,但它对我不起作用,所以我开始了。
我有以下 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)};
应该可以解决你的问题。