1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
|
namespace Test {
[DataContract]
public class QueryResult {
[DataMember]
public ResultSet ResultSet { get; set; }
}
[DataContract]
public class ResultSet {
[DataMember]
public string Query { get; set; }
[DataMember(Name="Result")]
public List<Company> Companies { get; set; }
}
[DataContract]
public class Company {
[DataMember(Name="symbol")]
public string Symbol { get; set; }
[DataMember(Name = "name")]
public string Name { get; set; }
[DataMember(Name = "exch")]
public string Exch { get; set; }
[DataMember(Name = "type")]
public string Type { get; set; }
[DataMember(Name = "exchDisp")]
public string ExchDisp { get; set; }
[DataMember(Name = "typeDisp")]
public string TypeDisp { get; set; }
}
class Program {
static void Main(string[] args) {
string value = @"{
""ResultSet"":
{
""Query"":""google"",
""Result"":
[
{
""symbol"": ""GOOG"",
""name"": ""Google Inc."",
""exch"": ""NMS"",
""type"": ""S"",
""exchDisp"": ""NASDAQ"",
""typeDisp"": ""Equity""
},
{
""symbol"": ""GOOG.MX"",
""name"": ""Google, Inc."",
""exch"": ""MEX"",
""type"": ""S"",
""exchDisp"": ""Mexico"",
""typeDisp"": ""Equity""
}
]
}
}";
deserializeWithDataContractJsonSerializer(value);
deserailizeWithJsonDotNet(value);
Console.ReadKey();
}
static void deserailizeWithJsonDotNet(string value) {
try {
Console.WriteLine("Désérialisation avec Json.Net");
var companies = from company in JObject.Parse(value)["ResultSet"]["Result"].Children()
select new
{
Symbol = company["symbol"],
Name = company["name"],
Exch = company["exch"],
Type = company["type"],
ExchDisp = company["exchDisp"],
TypeDisp = company["typeDisp"]
};
foreach (var company in companies) {
Console.WriteLine("symbol: {0} - name: {1} - exch: {2} - type: {3} - exhcDisp: {4} - typeDisp: {5}", company.Symbol, company.Name, company.Exch, company.Type, company.ExchDisp, company.TypeDisp);
}
} catch (Exception ex) {
Console.WriteLine(ex.Message);
}
Console.WriteLine("================================");
}
static void deserializeWithDataContractJsonSerializer(string value) {
try {
Console.WriteLine("Désérialisation avec DataContractJsonSerializer");
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(QueryResult));
MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(value));
QueryResult result = (QueryResult)serializer.ReadObject(ms);
if (result == null) throw new Exception("La désérialisation n'a pas marché");
foreach (Company company in result.ResultSet.Companies) {
Console.WriteLine("symbol: {0} - name: {1} - exch: {2} - type: {3} - exhcDisp: {4} - typeDisp: {5}", company.Symbol, company.Name, company.Exch, company.Type, company.ExchDisp, company.TypeDisp);
}
} catch (Exception ex) {
Console.WriteLine(ex.Message);
}
Console.WriteLine("================================");
}
}
} |
Partager