将一些字符串转换为数组或列表
本文关键字:数组 列表 转换 字符串 | 更新日期: 2023-09-27 18:13:50
嗨,我正在调用一个rest服务来获取国家,该服务正在返回国家给我,但它不是作为一个列表或我无法将其转换为列表,是否有可能转换国家列表并将其绑定到一个组合框。我还想澄清一下,我没有创建服务,或者我不能修改服务,但我必须使用该服务,这对我来说是强制性的。
{
"CountryList":"<Countries><Country><Code>0<'/Code><Name>aaaa<'/Name><'/Country><Country><Code>1<'/Code><Name>bbbbbb<'/Name><'/Country> ... other countries ... <'/Countries>",
"Error":{
"ErrorCode": 0,
"ErrorMessage": ""
}
}
我使用这个类来解析json
public class Error
{
public int ErrorCode { get; set; }
public string ErrorMessage { get; set; }
}
public class Country
{
public string CountryList { get; set; }
public Error Error { get; set; }
}
我不知道什么样的服务返回这个响应,但是正如您所看到的,您的JSON包含一个XML字符串。
反序列化JSON或XML的工作流程非常简单。
生成几个类来反序列化JSON (Visual Studio: Edit -> Paste Special -> Paste JSON As classes):
public class Rootobject
{
public string CountryList { get; set; }
public Error Error { get; set; }
}
public class Error
{
public int ErrorCode { get; set; }
public string ErrorMessage { get; set; }
}
和反序列化响应(使用JSON.NET):
var responseObject = JsonConvert.DeserializeObject<RootObject>(jsonString);
然后需要对XML进行反序列化。创建另一组类(Edit -> Paste Special -> Paste XML As classes):
/// <remarks/>
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
[System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)]
public partial class Countries
{
private CountriesCountry[] countryField;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("Country")]
public CountriesCountry[] Country
{
get
{
return this.countryField;
}
set
{
this.countryField = value;
}
}
}
/// <remarks/>
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public partial class CountriesCountry
{
private string codeField;
private string nameField;
/// <remarks/>
public string Code
{
get
{
return this.codeField;
}
set
{
this.codeField = value;
}
}
/// <remarks/>
public string Name
{
get
{
return this.nameField;
}
set
{
this.nameField = value;
}
}
}
和反序列化XML字符串(可选):
var countries = Deserialize<Countries>(responseObject.CountryList);