2013-02-13 3 views
2

У меня есть этот код, чтобы получить два дубль JSon:двойное значение в словаре

Dictionary<string, object> dict = this.GetDicFromInput(); 
Decimal tmpLat = (Decimal)dict["lat"]; 
Decimal tmpLon = (Decimal)dict["lon"]; 

Это GetDicFromInput:

private Dictionary<string, object> GetDicFromInput() 
{ 
    string input = null; 

    input = "{\"lon\":34.806109,\"lat\":31.9599733}"; 

    var json = new JavaScriptSerializer() { MaxJsonLength = int.MaxValue }; 
    Dictionary<string, object> dict = (Dictionary<string, object>)json.DeserializeObject(input); 

    return dict; 
} 

И когда я запускаю его я получаю:

[NullReferenceException: Object reference not set to an instance of an object.] 
    BabySitter.Search.Page_Load(Object sender, EventArgs e) in \\psf\home\Documents\Visual Studio 2010\Projects\BabySitter\BabySitter\Search.aspx.cs:28 
    System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14 
    System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35 
    System.Web.UI.Control.OnLoad(EventArgs e) +91 
    System.Web.UI.Control.LoadRecursive() +74 
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2207 

Это линия отказа:

Decimal tmpLat = (Decimal)dict["lat"]; 
+0

ли DeserializeObject возвращение нуль? –

+0

нет, он возвращает диктар с двумя объектами – MTA

+0

Какая строка строки 28? –

ответ

0

Используйте универсальную функцию, чтобы вернуть точный тип объекта, который вы создаете.

public T Deserialize<T>(string input) 

В этом случае

Dictionary<string, object> dict = json.DeserializeObject<Dictionary<string, object>(input); 
+0

Он уже понял это, см. последний комментарий –

Смежные вопросы