2012-06-10 20 views
17

मैं ऑब्जेक्ट कैसे ले सकता हूं और उसे JSON स्ट्रिंग में परिवर्तित कर सकता हूं और फिर उस ऑब्जेक्ट में स्ट्रिंग से वापस कर सकता हूं, विशेष रूप से, मेरे विंडोज 8 मेट्रो एप्लिकेशन के लिए WinRT में?मैं WinRT में JSON को डी/क्रमबद्ध कैसे करूं?

उत्तर

38
इस तरह

:

using System.IO; 
using System.Runtime.Serialization.Json; 
using System.Text; 

public static T Deserialize<T>(string json) 
{ 
    var _Bytes = Encoding.Unicode.GetBytes(json); 
    using (MemoryStream _Stream = new MemoryStream(_Bytes)) 
    { 
     var _Serializer = new DataContractJsonSerializer(typeof(T)); 
     return (T)_Serializer.ReadObject(_Stream); 
    } 
} 

public static string Serialize(object instance) 
{ 
    using (MemoryStream _Stream = new MemoryStream()) 
    { 
     var _Serializer = new DataContractJsonSerializer(instance.GetType()); 
     _Serializer.WriteObject(_Stream, instance); 
     _Stream.Position = 0; 
     using (StreamReader _Reader = new StreamReader(_Stream)) 
     { return _Reader.ReadToEnd(); } 
    } 
} 
+1

DataContractJsonSerializer आवश्यकता है कि कक्षाओं और सदस्यों को डेटाकंट्रैक्ट और डेटामेम्बर के साथ चिह्नित किया गया हो। Json.net नहीं करता है। पूर्व सुरक्षित है क्योंकि सभी वर्गों को अकेले उनके गुणों से पूरी तरह से पुनर्निर्मित नहीं किया जा सकता है। उत्तरार्द्ध तेज़ है क्योंकि आप हमेशा उन ऑब्जेक्ट्स को नियंत्रित नहीं करते हैं जिन्हें आप क्रमबद्ध कर रहे हैं और एक धारावाहिक मध्यवर्ती वर्ग बनाने में थोड़ा और समय लगता है। – Tristan

5

पहले http://json2csharp.com/ साथ सी # वर्गों उत्पन्न तब

मेरे उपयोगकर्ता वर्ग वर्तमान में इस तरह दिखता है पार्स करने के लिए http://james.newtonking.com/pages/json-net.aspx का उपयोग करें:

public class User 
{ 
    public string id { get; set; } 
    public string username { get; set; } 
    public string full_name { get; set; } 
    public string profile_picture { get; set; } 
    public string bio { get; set; } 
    public string website { get; set; } 
    public Counts counts { get; set; } 

    public static User SingleFromJSON(string jsonString) 
    { 
     return JsonConvert.DeserializeObject<SingleUser>(jsonString).data; 
    } 

    public static User MultipleFromJSON(string jsonString) 
    { 
     return JsonConvert.DeserializeObject<SingleUser>(jsonString).data; 
    } 

    private class SingleUser 
    { 
     public User data { get; set; } 
    } 

    private class MultipleUsers 
    { 
     public List<User> data { get; set; } 
    } 
} 

public class Counts 
{ 
    public int media { get; set; } 
    public int follows { get; set; } 
    public int followed_by { get; set; } 
} 

सुपर आसान: डी

+0

यह एक और तरीका है, निश्चित रूप से। हर कोई उस तरह के बाहरी पुस्तकालयों को पसंद नहीं करता है। लेकिन json.net अच्छी तरह से सम्मानित है। (और तेज) –

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