对像序列化为 json 对像

来源:互联网 发布:婚纱影楼网络推广 编辑:程序博客网 时间:2024/05/20 02:21

1.在 silverlight 中。

Namespace:  System.Runtime.Serialization.Json
Assembly:  System.ServiceModel.Web (in System.ServiceModel.Web.dll)

 

 void OnClick(object sender, EventArgs args)
        {
            txtOutput1.Text = "Create a User object and serialize it.";
            string json = WriteFromObject();
            txtOutput2.Text = json.ToString(); // Displays: {"Age":42,"Name":"Bob"}

            txtOutput3.Text = "Deserialize the data to a User object.";
            string jsonString = "{'Name':'Bill', 'Age':53}";
            User deserializedUser = ReadToObject(jsonString);
            txtOutput4.Text = deserializedUser.Name; // Displays: Bill
            txtOutput5.Text = deserializedUser.Age.ToString(); // Displays: 53
        }
        // Create a User object and serialize it to a JSON stream.
        public static string WriteFromObject()
        {
            //Create User object.
            User user = new User("Bob", 42);

            //Create a stream to serialize the object to.
            MemoryStream ms = new MemoryStream();

            // Serializer the User object to the stream.
            DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(User));
            ser.WriteObject(ms, user);
            byte[] json = ms.ToArray();
            ms.Close();
            return Encoding.UTF8.GetString(json, 0, json.Length);

        }

        // Deserialize a JSON stream to a User object.
        public static User ReadToObject(string json)
        {
            User deserializedUser = new User();
            MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json));
            DataContractJsonSerializer ser = new DataContractJsonSerializer(deserializedUser.GetType());
            deserializedUser = ser.ReadObject(ms) as User;
            ms.Close();
            return deserializedUser;
        }

    }

    [DataContract]
    public class User
    {
        [DataMember]
        public string Name { get; set; }

        [DataMember]
        public int Age { get; set; }

        public User() { }

        public User(string newName, int newAge)
        {
            Name = newName;
            Age = newAge;
        }

    }

 

2.在 wpf 中。

引用程序集  程序集 System.Runtime.Serialization.dll, v4.0.30319

命名空间为 System.Runtime.Serialization.Json

 

      /// <summary>
      /// 序列化为Json string
      /// </summary>
      /// <param name="obj"></param>
      /// <returns></returns>
      public  string SerializeJsonString(object obj)
      {
          MemoryStream ms = new MemoryStream();
          DataContractJsonSerializer ser = new DataContractJsonSerializer(obj.GetType());
          ser.WriteObject(ms, obj);
          byte[] json = ms.ToArray();
          ms.Close();
          string jsonString = Encoding.UTF8.GetString(json, 0, json.Length);
          return jsonString;
      }

 

原创粉丝点击