मुझे JsonValueKind के साथ एक समस्या का सामना करना पड़ रहा है, जो कि मैं उनके मूल्यों तक नहीं पहुंच सकता। मैं भुगतान चेकआउट के लिए हाइपरपे के साथ काम कर रहा हूं।
मैं उनके एपीआई के लिए अनुरोध करने के लिए नीचे दी गई विधि का उपयोग करता हूं और निम्नानुसार प्रतिक्रिया को deserialize करता हूं:
होम कंट्रोलर में संबंधित क्रिया विधि में मैं परिणाम प्राप्त करने के लिए request()
विधि को कॉल कर रहा हूं। नीचे बताया गया है कि परिणाम कैसा दिखता है:
उदाहरण के लिए मैं कोड और विवरण का मूल्य प्राप्त करने में फंस गया हूं क्योंकि वे एक JsonValueKind में संग्रहीत हैं। क्या आप कृपया मान निकालने के लिए JsonValueKind से निपटने में मेरी मदद कर सकते हैं।
आप मदद बहुत प्रशंसनीय है।
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;
ValueKind एक स्ट्रिंग मान है। आपका शब्दकोश Dictionary<string,string>
होना चाहिए।
JsonSerializer.Deserialize<Dictionary<string, string>>(json)
संबंधित सवाल
नए सवाल
json
JSON (जावास्क्रिप्ट ऑब्जेक्ट नोटेशन) मशीन और मानव पठनीय होने के लिए एक क्रमबद्ध डेटा इंटरचेंज प्रारूप है। इस टैग का उपयोग देशी जावास्क्रिप्ट वस्तुओं या जावास्क्रिप्ट ऑब्जेक्ट शाब्दिकों के लिए न करें। इससे पहले कि आप कोई प्रश्न पूछें, एक JSON सत्यापनकर्ता जैसे JSONLint (https://jsonlint.com) का उपयोग करके अपने JSON को मान्य करें।