【问题标题】:Convert Some Strings to Array Or List [closed]将一些字符串转换为数组或列表 [关闭]
【发布时间】:2015-12-19 05:10:15
【问题描述】:

大家好,我正在调用一项休息服务来获取国家/地区,该服务正在将国家/地区返回给我,但它不是以列表形式出现或无法将其转换为列表,是否可以转换国家/地区列表并绑定它到一个组合框。另外我想澄清一下,我没有创建服务,或者我无法修改服务,但我必须使用该服务,这对我来说是强制性的。

{
    "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,真的吗?
  • 你写过任何代码来尝试实现你想要的吗?
  • @codemonkey 认真地说我是这个 json 和 Web 服务的新手,无法思考任何事情,如果有的话可以帮助我找到实现这一目标的方法。
  • 你走了多远?您是否能够检索 JSON?你能解析 JSON 吗?
  • 是的,这个类 m 用于这个 public class Error { public int ErrorCode { get;放; } 公共字符串错误消息 { 获取;放; } } 公共类 Country { 公共字符串 CountryList { 获取;放; } 公共错误错误 { 获取;放; } }

标签: c# json rest


【解决方案1】:

我不知道什么样的服务会返回此响应,但正如您所见,您的 JSON 包含一个 XML 字符串。

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

生成几个类来反序列化 JSON(Visual Studio:编辑 -> 选择性粘贴 -> 将 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。为此创建另一组类(编辑 -> 选择性粘贴 -> 将 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 string (alternative):

var countries = Deserialize<Countries>(responseObject.CountryList);

【讨论】:

  • 哦! “粘贴......作为类”很酷。
  • 非常感谢............
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-17
  • 2021-05-24
  • 1970-01-01
  • 1970-01-01
  • 2013-09-17
相关资源
最近更新 更多