मुझे JsonValueKind के साथ एक समस्या का सामना करना पड़ रहा है, जो कि मैं उनके मूल्यों तक नहीं पहुंच सकता। मैं भुगतान चेकआउट के लिए हाइपरपे के साथ काम कर रहा हूं।

मैं उनके एपीआई के लिए अनुरोध करने के लिए नीचे दी गई विधि का उपयोग करता हूं और निम्नानुसार प्रतिक्रिया को deserialize करता हूं:

enter image description here

होम कंट्रोलर में संबंधित क्रिया विधि में मैं परिणाम प्राप्त करने के लिए request() विधि को कॉल कर रहा हूं। नीचे बताया गया है कि परिणाम कैसा दिखता है:

enter image description here

उदाहरण के लिए मैं कोड और विवरण का मूल्य प्राप्त करने में फंस गया हूं क्योंकि वे एक JsonValueKind में संग्रहीत हैं। क्या आप कृपया मान निकालने के लिए JsonValueKind से निपटने में मेरी मदद कर सकते हैं।

आप मदद बहुत प्रशंसनीय है।

0
Ali Sultan 20 अगस्त 2020, 19:14

2 जवाब

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

यदि आप परिणाम में वस्तु मूल्य प्राप्त करना चाहते हैं, तो नीचे की तरह एक कार्यशील डेमो है:

public void Test()
{
    //the data here is the same as reader.ReadToEnd() in your project
    var data = GetRequest();

    //your result
    var responseData = JsonSerializer.Deserialize<Dictionary<string, dynamic>>(data);
    
    //change like below
    var d = JsonDocument.Parse(data);  //JsonDocument.Parse(reader.ReadToEnd())
    var result = d.RootElement.EnumerateObject();
    foreach (var r in result)
    {
        if (r.Value.ValueKind == JsonValueKind.String)
        {
            var stringValue = r.Value.GetString();
        }
        if (r.Value.ValueKind == JsonValueKind.Object)
        {
            var m = JsonSerializer.Deserialize<TestModel>(r.Value.GetRawText());
            var Code = m.code;
            var des = m.description;
        }
    }
       
}

आदर्श:

public class TestModel
{
    public string code { get; set; }
    public string description { get; set; }
}

नतीजा: यहां छवि विवरण दर्ज करें

नीचे दिए गए परिणाम के लिए व्यूमोडेल बनाने का आसान तरीका है:

public class ViewModel
{
    public TestModel result { get; set; }
    public string buildNumber { get; set; }
}

जेसन स्ट्रिंग को डिसेरिएलाइज़ करें और नीचे जैसा मान प्राप्त करें:

var responseData = JsonSerializer.Deserialize<ViewModel>(reader.ReadToEnd());
var code = responseData.result.code;
var des = responseData.result.description;
0
Rena 21 अगस्त 2020, 09:54

ValueKind एक स्ट्रिंग मान है। आपका शब्दकोश Dictionary<string,string> होना चाहिए।

JsonSerializer.Deserialize<Dictionary<string, string>>(json)
0
Bruce Adams 20 अगस्त 2020, 22:58