将一些字符串转换为数组或列表 [关闭]
Posted
技术标签:
【中文标题】将一些字符串转换为数组或列表 [关闭]【英文标题】: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 获取;放; 公共错误错误 获取;放; 【参考方案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);
【讨论】:
哦! “粘贴......作为类”很酷。 非常感谢............以上是关于将一些字符串转换为数组或列表 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章