8

我正在寻找一个示例代码/库来使用 C# 解码 JSON 字符串。

要编码,我可以这样做:

var data = new Dictionary<string,string>(); 
data.Add("..", "..."); 
var json_encoded = new JavaScriptSerializer().Serialize(data); 

但我该如何解码?

var json_decoded = ?? 
4

2 回答 2

11

你可以这样做:

var data = new Dictionary<string, string>();
data.Add("foo", "baa"); 

JavaScriptSerializer ser = new JavaScriptSerializer();
var JSONString = ser.Serialize(data); //JSON encoded

var JSONObj = ser.Deserialize<Dictionary<string, string>>(JSONString); //JSON decoded
Console.Write(JSONObj["foo"]); //prints: baa
于 2011-10-09T02:32:50.340 回答
9

这将采用 JSON 并将其转换为您指定的强类型类 (T)

public static T Deserialize<T>(string json)
        {
            var obj = Activator.CreateInstance<T>();
            using(var ms = new MemoryStream(Encoding.Unicode.GetBytes(json)))
            {
                var serializer = new DataContractJsonSerializer(obj.GetType());
                obj = (T) serializer.ReadObject(ms);
                return obj;
            }
        }

这将接受一个类并将其序列化为 JSON

    public static string Serialize<T>(T obj)
    {
        var serializer = new DataContractJsonSerializer(obj.GetType());
        using (var ms = new MemoryStream())
        {
            serializer.WriteObject(ms, obj);
            return Encoding.Default.GetString(ms.ToArray());
        }
    }

注意:在第一个示例中,您需要有一个支持类来指定类型T是什么。因此,如果您告诉它 T 是类型,则User需要在某处指定:

public class User
    {
        public string Username { get; set; }
        public string Firstname { get; set; }
    }
于 2011-10-08T21:48:11.153 回答