C# DataContractJsonSerializer在WP7上的行为如何?

C# 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 {

我正在处理一个REST服务,它根据提供给它的信息(它是一个搜索服务),返回包含字符串元素或字符串元素列表的元素。例如,搜索具有零个或多个图像(保存为url字符串)的项目。My
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"
}