2015-03-02 14 views
6

तो, यह मेरी कक्षा है:प्राप्त करें सी # एक JSON-स्ट्रिंग से बाहर -Object-सरणी

public class User 
{ 
    public User() { } 

    public string Username { get; set; } 
    public string Password { get; set; } 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 

} 

और यह कैसे मेरे JSON-स्ट्रिंग लग रहा है की तरह है:

{"results":[{"FirstName":"firstname1","LastName":"lastname1","Password":"TestPassword","Username":"TestUser","createdAt":"2015-03-02T17:36:25.232Z","objectId":"a8bKXDg2Y2","updatedAt":"2015-03-02T20:35:48.755Z"},{"FirstName":"firstname2","LastName":"lastname2","Password":"TestPw","Username":"TestUser2","createdAt":"2015-03-02T20:35:26.604Z","objectId":"2XPIklE3uW","updatedAt":"2015-03-02T20:35:53.712Z"}]} 

मैं चाहूँगा उपयोगकर्ता [] उपयोगकर्ताओं को इससे बाहर निकालने के लिए। मेरी समस्या {"परिणाम:": [....]} - भाग है।

मैं इसे इस तरह की कोशिश की है:

JavaScriptSerializer js = new JavaScriptSerializer(); 
User[] user = js.Deserialize<User[]>(jsonString); 

लेकिन मुझे लगता है परिणाम-भाग सब कुछ खिलवाड़ कर रहा है किसी भी तरह। इस समस्या को हल करने का सबसे अच्छा तरीका क्या होगा?

public class MyModel 
{ 
    public User[] Results { get; set; } 
} 

अब आप आगे जाना है और अपने JSON स्ट्रिंग वापस इस रैपिंग मॉडल के लिए deserialize कर सकते हैं::

JavaScriptSerializer js = new JavaScriptSerializer(); 
MyModel model = js.Deserialize<MyModel>(jsonString); 

और अब वहाँ कुछ भी नहीं है

+2

जब भी आप JSON मैं हमेशा http://json2csharp.com के लिए जा रहा सुझाव है deserialize। यह उन वर्गों को उत्पन्न करेगा जिन्हें आपको deserialize करने की आवश्यकता है। –

उत्तर

7

एक रैपिंग मॉडल है कि आपके JSON संरचना को प्रतिबिंबित करेगा परिभाषित करने का प्रयास करें आप अपने उपयोगकर्ताओं संग्रह वापस पाने से रोकता है:

User[] user = model.Results; 
+0

धन्यवाद, यह काम कर सकता है - लेकिन हर वर्ग के लिए एक रैपर बनाने का एक अच्छा तरीका है? –

+1

बेशक यह एक अच्छा तरीका है। आपको वास्तव में जेएसओएन संरचना से मेल खाना चाहिए जो आप deserializing कर रहे हैं। अन्यथा आप जेएसओएन सीरियलाइज़र को स्वचालित रूप से यह जानने के लिए कैसे उम्मीद करते हैं कि आप क्या हासिल करने की कोशिश कर रहे हैं? यह प्रकार आत्मनिरीक्षण और गुण मिलान से काम करता है। तो सुनिश्चित करें कि धारावाहिक/deserializing जब आप उचित संरचना है। –

+0

बहुत बहुत धन्यवाद! मुझे बहुत मदद की। (मुझे इस उत्तर को स्वीकार करने के लिए लगभग 7 मिनट का इंतजार करना होगा, मैं इसे बाद में करूँगा) –

1

आप अपने मॉडल

public class Data 
{ 
    public User[] results { get; set; } 
} 

पर एक और परत की जरूरत है तो फिर Data वर्ग

संबंधित मुद्दे