मैंने पहले से ही कई अन्य पदों पर ध्यान दिया है और समाधान हमेशा वही होता है लेकिन यह मेरे लिए काम नहीं करता है इसलिए मैं यहां जाता हूं।

मेरे पास निम्न 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; }
    }

मैं स्वचालित रूप से Acteur ऑब्जेक्ट जेनरेट करने के लिए JSON वैरिएबल से JSON प्राप्त करने का प्रयास कर रहा हूं। मुझे किसकी याद आ रही है?

0
En_Tech_Siast 7 मई 2017, 02:07

2 जवाब

सबसे बढ़िया उत्तर

JSON डेटा {"visiteur":{...} } है। JsonConvert.DeserializeObject<ActeurJson> काम करने के लिए, C# प्रॉपर्टी का नाम JSON ऑब्जेक्ट में प्रॉपर्टी के नाम से मेल खाना चाहिए:

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

वैकल्पिक रूप से, आप C# प्रॉपर्टी के नाम को ओवरराइड करने के लिए JsonPropertyAttribute का उपयोग कर सकते हैं:

public class ActeurJson
{
    [JsonProperty("visiteur")]
    public Acteur Acteur { get; set; }
}
2
Bradley Grainger 7 मई 2017, 02:12

आपके पास एक्टूर और एक्टूरजेसन वर्ग हैं, जबकि स्ट्रिंग प्रतिनिधित्व एक्टूर के साथ मेल खाता है। यदि आप डिसेरिएलाइज़ेशन लाइन को बदलते हैं

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

आपकी समस्या का समाधान करना चाहिए।

-1
Gururaj 7 मई 2017, 02:18