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;
}