【问题标题】:deserialise json server side反序列化 json 服务器端
【发布时间】:2009-07-20 17:47:21
【问题描述】:

如何反序列化从 javascript(使用 jquery.ajax)发送到 .aspx 页面(不是 Web 服务)的 json 对象?

例如如果我有以下 json 对象;

var json = {"name" : "michael", "surname" : "brown", "age" : "35"}

我用

$.post('process.aspx', json)

如何反序列化后面的 process.aspx 代码中的 json?

另外,在我的情况下如何使用 $.postJSON()?

【问题讨论】:

    标签: asp.net jquery json


    【解决方案1】:

    您可以使用 .Net 3.5 中内置的 DataContractJsonSerializer,或者我们使用了一个很棒的开源 Json 库:http://jayrock.berlios.de/

    要使用 DataContractJsonSerializer,您的代码可能如下所示:

    var serializer = new DataContractJsonSerializer(typeof(Person));
    using (MemoryStream ms = new MemoryStream(new ASCIIEncoding().GetBytes(myString)))
    {
      try
      {
        Person obj = serializer.ReadObject(ms) as Person;
      }
      catch (Exception e)
      {
        throw new InvalidOperationException("Could not deserialize Person.", e);
      }
    }
    

    【讨论】:

      【解决方案2】:

      NewtonSoft 库是一个不错的选择。

      【讨论】:

        【解决方案3】:

        你可以使用DataContractJsonSerializer:

        class Program
        {
            [DataContract]
            class Person
            {
                [DataMember(Name = "name")]
                public string Name { get; set; }
                [DataMember(Name = "surname")]
                public string Surname { get; set; }
                [DataMember(Name="age")]
                public int Age { get; set; }
            }
        
            static void Main(string[] args)
            {
                var json = @"{""name"" : ""michael"", ""surname"" : ""brown"", ""age"" : ""35""}";
        
                var serializer = new DataContractJsonSerializer(typeof(Person));
                using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(json)))
                {
                    var person = (Person)serializer.ReadObject(stream);
                    Console.WriteLine("Name : {0}, Surname : {1}, Age : {2}", 
                        person.Name, person.Surname, person.Age);
                }
            }
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-11-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多