将某些字符串转换为数组或列表

时间:2015-09-22 09:24:21

标签: c# json 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; }
}

1 个答案:

答案 0 :(得分:4)

我不知道哪种服务会返回此响应,但是您看到JSON包含XML字符串。

反序列化JSON或XML的工作流程非常简单。

生成几个类来反序列化JSON(Visual Studio:编辑 - &gt;选择性粘贴 - >将JSON粘贴为类):

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。为此创建另一组类(编辑 - &gt;选择性粘贴 - >将XML粘贴为类):

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

deserialize the XML stringalternative):

var countries = Deserialize<Countries>(responseObject.CountryList);
相关问题