पॉप्युलेट करें, मैं एक तृतीय पक्ष webservice से कनेक्ट करता हूं जो एक जटिल JSON ऑब्जेक्ट देता है जिसमें केवल मुझे आवश्यक जानकारी के कुछ बिट्स होते हैं।JsonSerializer का उपयोग करके JSON डेटा का चयन करें और सी # ऑब्जेक्ट
असल में, मुझे केवल "मूल्य" में सरणी की आवश्यकता है। उस सरणी से, मुझे बस "आईडी", "शीर्षक" और "स्थिति" गुणों की आवश्यकता है।
मैं उन विशेषताओं को परियोजना नामक सी # कक्षा में रखना चाहता हूं।
public class Project
{
public String Id { get; set; }
public String Title { get; set; }
public String Status { get; set; }
}
मैं JSON पढ़ने के लिए इस कोड का उपयोग और बदलने करने के लिए कोशिश कर रहा हूँ:
using (WebResponse response = request.GetResponse())
{
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
var serializer = new JsonSerializer();
var jsonTextReader = new JsonTextReader(reader);
returnValue = serializer.Deserialize<Project>(jsonTextReader);
}
}
उदाहरण JSON:
{
"odata.metadata":"http://school.edu/Api/1/$metadata#Projects",
"odata.count":"3",
"value":[
{
"odata.id":"http://school.edu/Api/1/Projects('123')",
"[email protected]":"http://school.edu/Api/1/Projects('123')/RelatedProjects",
"[email protected]":"http://school.edu/Api/1/Projects('123')/Tags",
"[email protected]":"http://school.edu/Api/1/Projects('123')/Categories",
"[email protected]":"http://school.edu/Api/1/Projects('123')/ep",
"#CreateLike":{
"target":"http://school.edu/Api/1/Projects('123')/CreateLike"
},
"#CreateShortcut":{
"target":"http://school.edu/Api/1/Projects('123')/CreateShortcut"
},
"#Play":{
"target":"http://school.edu/Play/123"
},
"#SendInvitation":{
"target":"http://school.edu/Api/1/Projects('123')/SendInvitation"
},
"#CopyProject":{
"target":"http://school.edu/Api/1/Projects('123')/CopyProject"
},
"#AddVideoPodcast":{
"target":"http://school.edu/Api/1/Projects('123')/AddVideoPodcast"
},
"#AddEP":{
"target":"http://school.edu/Api/1/Projects('123')/AddEP"
},
"Id":"123",
"Title":"Test Title 1",
"Status":"Viewable"
},
{
"odata.id":"http://school.edu/Api/1/Projects('456')",
"[email protected]":"http://school.edu/Api/1/Projects('456')/RelatedProjects",
"[email protected]":"http://school.edu/Api/1/Projects('456')/Tags",
"[email protected]":"http://school.edu/Api/1/Projects('456')/Categories",
"[email protected]":"http://school.edu/Api/1/Projects('456')/ep",
"#CreateLike":{
"target":"http://school.edu/Api/1/Projects('456')/CreateLike"
},
"#CreateShortcut":{
"target":"http://school.edu/Api/1/Projects('456')/CreateShortcut"
},
"#Play":{
"target":"http://school.edu/Play/456"
},
"#SendInvitation":{
"target":"http://school.edu/Api/1/Projects('456')/SendInvitation"
},
"#CopyProject":{
"target":"http://school.edu/Api/1/Projects('456')/CopyProject"
},
"#AddVideoPodcast":{
"target":"http://school.edu/Api/1/Projects('456')/AddVideoPodcast"
},
"#AddEP":{
"target":"http://school.edu/Api/1/Projects('456')/AddEP"
},
"Id":"456",
"Title":"Test Title 2",
"Status":"Viewable"
},
{
"odata.id":"http://school.edu/Api/1/Projects('789')",
"[email protected]":"http://school.edu/Api/1/Projects('789')/RelatedProjects",
"[email protected]":"http://school.edu/Api/1/Projects('789')/Tags",
"[email protected]":"http://school.edu/Api/1/Projects('789')/Categories",
"[email protected]":"http://school.edu/Api/1/Projects('789')/ep",
"#CreateLike":{
"target":"http://school.edu/Api/1/Projects('789')/CreateLike"
},
"#CreateShortcut":{
"target":"http://school.edu/Api/1/Projects('789')/CreateShortcut"
},
"#Play":{
"target":"http://school.edu/Play/789"
},
"#SendInvitation":{
"target":"http://school.edu/Api/1/Projects('789')/SendInvitation"
},
"#CopyProject":{
"target":"http://school.edu/Api/1/Projects('789')/CopyProject"
},
"#AddVideoPodcast":{
"target":"http://school.edu/Api/1/Projects('789')/AddVideoPodcast"
},
"#AddEP":{
"target":"http://school.edu/Api/1/Projects('789')/AddEP"
},
"Id":"789",
"Title":"Test Title 3",
"Status":"Viewable"
}
],
"odata.nextLink":"http://school.edu/Api/1/Folders('xyz')/Projects?$skip=10&$top=10"
}
मैं सिर्फ एक मिल यह मेरी कक्षा है वापस शून्य वस्तु। लेकिन डीबगर में, मैं देख सकता हूं कि यह webservice से सभी JSON डेटा खींच रहा है।
मैं जेएसओएन से क्या चाहता हूं, मेरी सी # वस्तुओं का निर्माण कैसे कर सकता हूं, और बाकी सभी को अनदेखा कर सकता हूं?
धन्यवाद!
Deserialize दस्तावेज़ीकरण को देखते हुए इसके लिए अंतर्निहित कार्यक्षमता प्रतीत नहीं होती है। इसलिए उत्तर देने के लिए समय बिताने के लिए आप पूरी चीज को निराश नहीं कर सकते हैं, फिर चुनिंदा संपत्तियों का चयन करें? –
@ एम.एडमंडसन धन्यवाद। बेवकूफ सवाल, लेकिन deserializing के बिना, मुझे डेटा/विशेषताओं की आवश्यकता होगी? – SkyeBoniwell
क्या आप पूरी प्रतिक्रिया deserialize करने में सक्षम नहीं हैं? –