をデシリアライズするとき、単一およびアレイの両方可能性がハンドル:ここC#の私は逆シリアル化する必要があり、このようなXML持つXMLは、
<?xml version="1.0" encoding="utf-8" ?>
<Root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Countries>
<Country>
<CountryCode>CN</CountryCode>
<CurrentStatus>Active</CurrentStatus>
</Country>
</Countries>
<Countries>
<Country>
<CountryCode>AU</CountryCode>
<CurrentStatus>Cancelled</CurrentStatus>
</Country>
<Country>
<CountryCode>CN</CountryCode>
<CurrentStatus>Cancelled</CurrentStatus>
</Country>
<Country>
<CountryCode>US</CountryCode>
<CurrentStatus>Active</CurrentStatus>
</Country>
</Countries>
<Countries xsi:nil="true" />
</Root>
を私の問題は、国がシングルとして国を持つことができるということで、あなたが見ることができます。それを稼働させるために今はobject
タイプとしていますが、扱いにくいです。これを解決する最良の解決策は何ですか?私は他のすべてのシステムがそれを使用しているので、これをjson
に変換しています。これが私たちが持っているXMLファイルです。
public class Country
{
[JsonProperty("CountryCode")]
public string CountryCode { get; set; }
[JsonProperty("CurrentStatus")]
public string CurrentStatus { get; set; }
}
public class CountryInfo
{
[JsonProperty("Country")]
public object Country { get; set; }
//Does not work
//[JsonProperty("Country")]
//public IList<Country> Country { get; set; }
}
public class Root
{
[JsonProperty("Countries")]
public IList<CountryInfo> Countries { get; set; }
}
public class ExampleCountry
{
[JsonProperty("Root")]
public Root Root { get; set; }
}
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(xml);
string json = JsonConvert.SerializeXmlNode(xmlDoc);
var exampleCountries = JsonConvert.DeserializeObject<ExampleCountry>(json);
アップデート:私はpublic IList<Country> Country { get; set; }
を有効にした場合
私は次のエラーを取得する:
Newtonsoft.Json.JsonSerializationException: 'Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'System.Collections.Generic.IList`1[]' because the type requires a JSON array (e.g. [1,2,3]) to deserialize correctly.
ので、それはありませんあなたのar要素が含まれていない場合、または要素が1つのみの場合は、配列にすることはできません。 –
どうして 'public IList国{get;セット; } 'うまくいきませんか?それはどのくらい正確に機能しませんか? –
@AshleyPillay私は、彼が単一のオブジェクト(つまり、public Country Country {get; set;})を受け取ることができたときと同じように動作するとは限らないことを想定しています。 。 – hsoesanto