C# DataContractJsonSerializer在WP7上的行为如何?
我正在处理一个REST服务,它根据提供给它的信息(它是一个搜索服务),返回包含字符串元素或字符串元素列表的元素。例如,搜索具有零个或多个图像(保存为url字符串)的项目。MyC# DataContractJsonSerializer在WP7上的行为如何?,c#,json,windows-phone-7,deserialization,C#,Json,Windows Phone 7,Deserialization,我正在处理一个REST服务,它根据提供给它的信息(它是一个搜索服务),返回包含字符串元素或字符串元素列表的元素。例如,搜索具有零个或多个图像(保存为url字符串)的项目。Mymodel包含以下属性来处理我的示例: private List<string> _Images = new List<string>(); [DataMember(Name="images", IsRequired=false)] public List<string> Images {
model
包含以下属性来处理我的示例:
private List<string> _Images = new List<string>();
[DataMember(Name="images", IsRequired=false)]
public List<string> Images
{
get
{
return _Images;
}
set
{
_Images = value;
onPropertyChanged("Images");
}
}
示例JSON
,带有一个图像:
{
"id": 24955,
"title": "Conan the Barbarian",
"duration": 105,
"hd": false,
"trailer": "800/BM_6305_800_tr.wmv",
"images": "http://website.com/images/conanthebar_6.jpg"
}
现在,我的问题是,当我使用DataContractJsonSerializer
时,这将如何处理?如果传入json的图像字符串是单个字符串(与数组/字符串列表相比),它会将其转换为只有一个成员的字符串列表吗
最后,如果情况并非如此(我的理论是错误的),那么如何处理这种情况呢?Kris,如果DataContractJsonSerializer需要一个数组或任何IEnumerable字符串,它实际上需要以下格式的内容: [“str1”、“str2”、“str3”、…] 如果它只接收一个字符串,如下所示: “str1” 它实际上会抛出一个异常。它不会自动将其转换为数组,也没有方法进行转换
但是,有一个解决方法是,如果您将“Images”声明为System.Object类型。如果这样做,序列化也会起同样的作用。反序列化将按照您希望的方式工作——如果遇到数组,它将反序列化为字符串数组,如果遇到字符串,它将反序列化为System.string。您有一些JSON示例来说明您的问题吗?
{
"id": 24955,
"title": "Conan the Barbarian",
"duration": 105,
"hd": false,
"trailer": "800/BM_6305_800_tr.wmv",
"images": "http://website.com/images/conanthebar_6.jpg"
}