Convert Object to {Xml/Json} <==> {Xml/Json} to Object
User.cs
代碼: 選擇全部
using System;
using System.Collections.Generic;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;
using System.Text;
using System.Xml;
using System.Xml.Linq;
using System.Xml.Serialization;
[Serializable]
[DataContract]
public class User
{
[DataMember]
public string Email { get; set; }
[DataMember]
public string Name { get; set; }
[DataMember]
public List<ElectronicAddr> ElectronicAddrs { get; set; }
public static string ObjectToJson<T>(T[] t)
{
string result;
//Create a stream to serialize the object to.
using (var ms = new MemoryStream())
{
// Serializer the User object to the stream.
var ser = new DataContractJsonSerializer(typeof(T[]));
ser.WriteObject(ms, t);
result = Encoding.UTF8.GetString(ms.ToArray());
ms.Close();
}
return result;
}
public static string ObjectToXML<T>(T[] t)
{
string result = string.Empty;
//// Set the public property values.
using (MemoryStream stream = new MemoryStream(500))
{
using (var xmlWriter = XmlTextWriter.Create(stream,
new XmlWriterSettings()
{
OmitXmlDeclaration = true,
Encoding = Encoding.UTF8,
Indent = true
}))
{
XmlSerializer serializer = new XmlSerializer(typeof(T[]));
//// Serialize the object, and close the TextWriter.
serializer.Serialize(xmlWriter, t);
}
result = Encoding.UTF8.GetString(stream.ToArray());
}
return result;
}
public static T[] JsonToObject<T>(string json)
{
MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json));
return new DataContractJsonSerializer(typeof(T[])).ReadObject(ms) as T[];
}
public static T[] XmlToObject<T>(string xmlString)
{
var xmlRoot = XElement.Parse(xmlString);
return new XmlSerializer(typeof(T[])).Deserialize(xmlRoot.CreateReader()) as T[];
}
}
ObjectToJson
使用方法:
輸出結果:
代碼: 選擇全部
//// 物件 轉換成 Json
string JsonString = User.ObjectToJson<User>(
new[]
{
new User
{
Name = "Widget",
Email = "Regular Widget",
ElectronicAddrs = new List<ElectronicAddr>()
{
new ElectronicAddr()
{
City = "MyCity0",
Addr = "MyAddr0"
},
new ElectronicAddr()
{
City = "MyCity1",
Addr = "MyAddr1"
},
}
}
});
輸出結果:
代碼: 選擇全部
[{"ElectronicAddrs":[{"Addr":"MyAddr0","City":"MyCity0"},{"Addr":"MyAddr1","City":"MyCity1"}],"Email":"Regular Widget","Name":"Widget"}]
ObjectToXML
使用方法:
xmlString 輸出結果
代碼: 選擇全部
//// 物件 轉換成 XML
string xmlString = User.ObjectToXML<User>(
new[]
{
new User
{
Name = "Widget",
Email = "Regular Widget",
ElectronicAddrs = new List<ElectronicAddr>()
{
new ElectronicAddr()
{
City = "MyCity0",
Addr = "MyAddr0"
},
new ElectronicAddr()
{
City = "MyCity1",
Addr = "MyAddr1"
},
}
}
});
xmlString 輸出結果
代碼: 選擇全部
<ArrayOfUser xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<User>
<Email>Regular Widget</Email>
<Name>Widget</Name>
<ElectronicAddrs>
<ElectronicAddr>
<City>MyCity0</City>
<Addr>MyAddr0</Addr>
</ElectronicAddr>
<ElectronicAddr>
<City>MyCity1</City>
<Addr>MyAddr1</Addr>
</ElectronicAddr>
</ElectronicAddrs>
</User>
</ArrayOfUser>
JsonToObject
代碼: 選擇全部
string inputData = string.Empty;
inputData = "[{\"ElectronicAddrs\":[{\"Addr\":\"MyAddr0\",\"City\":\"MyCity0\"},{\"Addr\":\"MyAddr1\",\"City\":\"MyCity1\"}],\"Email\":\"Regular Widget\",\"Name\":\"Widget\"}]";
User[] JsonList = User.JsonToObject<User>(inputData);
XmlToObject
代碼: 選擇全部
inputData = @"<ArrayOfUser xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"">
<User>
<Email>Regular Widget</Email>
<Name>Widget</Name>
<ElectronicAddrs>
<ElectronicAddr>
<City>MyCity0</City>
<Addr>MyAddr0</Addr>
</ElectronicAddr>
<ElectronicAddr>
<City>MyCity1</City>
<Addr>MyAddr1</Addr>
</ElectronicAddr>
</ElectronicAddrs>
</User>
</ArrayOfUser>";
User[] XmlList = User.XmlToObject<User>(inputData);
誰在線上
正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客