2011-01-20 12 views
5

का उपयोग कर सी # में ऑब्जेक्ट करने के लिए JSON सरणी में एकाधिक आइटम जोड़ें। क्या कोई मुझे बता सकता है कि मैं एक ऑब्जेक्ट को कैसे deserialize कर सकता हूं जिसमें एकाधिक गुण हैं?जेसन.net

नीचे दिए गए परिदृश्य को देखते हुए, कोड ठीक काम करता है।

public ActionResult Index() 
{ 
    string json = @"{""name"": ""Person 2"",""email"": ""[email protected]""}"; 

    var emp = JsonConvert.DeserializeObject<Person>(json); 
    Response.Write(emp.name + emp.email); 
    return View(); 
} 

public class Person 
{ 
    public string name { get; set; } 
    public string email { get; set; } 
} 

लेकिन क्या, मैं अगर सरणी कई आइटम शामिल हैं क्या करना होगा जैसे

string json = @"{""data"": [{""name"": ""Person 1"",""email"": ""[email protected]""},{""name"": ""Person 2"",""email"": ""[email protected]""}]}"; 

अग्रिम धन्यवाद

जवाब पहले से ही नीचे दिए गए समस्या मैंने पूछा के लिए एकदम सही थे, लेकिन अब मैं एक कदम आगे चला गया है। क्या कोई इस बात पर सलाह दे सकता है कि मुझे क्या करना होगा यदि जेसन में इसमें कोई सरणी थी। एक पते के अतिरिक्त?

{ 
    "data": [ 
     { 
      "name": "Person 1", 
      "email": "[email protected]", 
      "address": { 
       "address1": "my address 1", 
       "address2": "my address 2" 
      } 
     }, 
     { 
      "name": "Person 2", 
      "email": "[email protected]", 
      "address": { 
       "address1": "my address 1", 
       "address2": "my address 2" 
      } 
     } 
    ] 
} 
+0

यदि आपकी 'व्यक्ति वर्ग' को 'पता' वर्ग संपत्ति के साथ भी बढ़ाया गया है तो आपको कुछ भी करने की आवश्यकता नहीं है। अन्यथा क्या आप कहते हैं कि यह नहीं है और अब आपको यह "अतिरिक्त" संपत्ति मिल गई है? – Enigmativity

उत्तर

5

कुछ इस तरह अतीत में मेरे लिए काम किया है:

JObject o = JObject.Parse(json); // This would be the string you defined above 
// The next line should yield a List<> of Person objects... 
List<Person> list = JsonConvert.DeserializeObject<List<Person>>(o["data"].ToString()); 

आप अपने व्यक्ति वस्तु को सजाने के लिए इस प्रकार चाह सकते हैं:

[JsonObject(MemberSerialization.OptIn)] 
public class Person 
{ 
    [JsonProperty] 
    public string name{get;set;} 
    [JsonProperty] 
    public string email{get;set;} 
} 
1

deserialize के रूप में:

public class JsonData 
{ 
    public List<Person> Data {get;set;} 
} 
2

आप एक का उपयोग कर सकते हैं गुमनाम प्रकार

var template = new { data = new Person[] { } }; 
Person[] emps = JsonConvert 
    .DeserializeAnonymousType(json, template) 
    .data; 
संबंधित मुद्दे