无法将“System.String”类型的对象转换为“属性搜索”类型

时间:2013-06-12 06:17:16

标签: .net json web-services deserialization

我正在使用weservice方法,

public string SearchProperties(string pPropertySearch, string pSort)
    {
        string[] _propSearch = pPropertySearch.Split(',');
        string searchType = (_propSearch)[_propSearch.Length - 1];
        List<Property> returnResults = new List<Property>();
        try
        {
            PropertySearch _MyPropertySearch = (PropertySearch)JavaScriptConvert.DeserializeObject(pPropertySearch, typeof(PropertySearch));
            returnResults = PropertyDALC.SearchPropertyNew(_MyPropertySearch, pSort, searchType, 25);
        }
        catch (Exception e)
        {

        }
        string output = JavaScriptConvert.SerializeObject(returnResults);

        return output;
    }

PropertySearch.cs,

[Serializable]
public class PropertySearch
{
private string userId;
private string sessionId;

private string priceMin;
private string priceMax;


public string UserId
{
    get { return userId; }
    set { userId = value; }
}
public string SessionId
{
    get { return sessionId; }
    set { sessionId = value; }
}

public string PriceMin
{
    get { return priceMin; }
    set { priceMin = value; }
}
public string PriceMax
{
    get { return priceMax; }
    set { priceMax = value; }
}
public string BedsMin
{
    get { return bedsMin; }
    set { bedsMin = value; }
}         
}

我将字符串“pPropertySearch”作为:

 "0000-0000","gghuk","6666","8888"

单击InVoke按钮时,将调用Web服务并靠近此行

" PropertySearch _MyPropertySearch = (PropertySearch)JavaScriptConvert.DeserializeObject(pPropertySearch, typeof(PropertySearch));"

它正在给出这个例外,

 "Cannot convert object of type 'System.String' to type 'PropertySearch'"

此代码有什么问题。请纠正我。

我以错误的格式传递字符串吗?请帮忙。   我不知道webservice中的这些序列化,反序列化概念。

任何帮助表示赞赏!!

1 个答案:

答案 0 :(得分:2)

看起来您正在尝试使用无效的json反序列化。检查json格式的好地方是JsonLint.com。您将希望您的json对象看起来更像这样:

{
    "UserId": 1,
    "SessionId": 1,
    "PriceMin": 1,
    "PriceMax": 1,
    "BedsMin": 1
}

您遇到的问题是您传递的是逗号分隔的字符串。反序列化器不知道要映射到哪些字段的值。