2013-10-16 1 views
0
{ 
    "code": 0, 
    "message": "success", 
    "expense": { 
      "account_name": "Printing and Stationery", 
      "paid_through_account_name": "Petty Cash" 
       } 
    } 

Ceci est mon format JSON, Et je vais essayer de le désérialiser avec la classe suivanteProblème avec JSON analyse syntaxique pour windows phone

[DataContract] 
public class Expenses 
{ 

    [DataMember(Name = "code")] 
    public int Code { get; set; } 

    [DataMember(Name = "message")] 
    public string Message { get; set; } 

    [DataMember(Name = "expense")] 
    public Expense Expense { get; set; } 
} 

[DataContract] 
public class Expense 
{ 
    [DataMember(Name = "account_name")] 
    public string Account_Name { get; set; } 

    [DataMember(Name = "paid_through_account_name")] 
    public int Paid_Through_Account_Name { get; set; } 
} 

et j'appeler cette classe avec l'aide de l'information suivante Code

 var myObjects = JsonConvert.DeserializeObject<Expenses>(json); 

mais tout en exécutant la ligne ci-dessus je reçois toujours une erreur indiquant que,

 An exception of type 'System.UnauthorizedAccessException' occurred in  PhoneApp18.DLL but was not handled in user code 

If there is a handler for this exception, the program may be safely continued. 

aide-moi à sortir de cette question ....

Répondre

0

Vous avez json « paid_through_account_name »: « petite caisse » où « la petite caisse » est string. Mais dans votre propriété de modèle public Paid_Through_Account_Name a le type int. Essayez de changer le type en string.

[DataContract] 
public class Expense 
{ 
    [DataMember(Name = "account_name")] 
    public string Account_Name { get; set; } 

    [DataMember(Name = "paid_through_account_name")] 
    public string Paid_Through_Account_Name { get; set; } //string type 
} 

Mise à jour

Probablement que vous essayez de mettre à jour l'interface utilisateur de l'autre fil (non principal). Dans l'application Windows Phone, vous pouvez mettre à jour UIuniquement dans le thread principal. Dans ce cas, utilisez une telle construction Dispatcher.

Dispatcher.BeginInvoke(() => 
        { 
          TextBox.Text = myString; 
        }); 

http://msdn.microsoft.com/en-us/library/ms741870.aspx

http://weimenglee.blogspot.ru/2013/07/windows-phone-tip-updating-ui-from.html

+0

Merci encore @Alexandr ... Got it raison !! :) – Aju

+0

lorsque j'essaie de mettre le contenu dans un ** TextBox **, j'obtiens une erreur indiquant que 'System.UnauthorizedAccessException': Accès croisé non valide. Que dois-je faire pour rectifier cela? – Aju

+0

Je mets à jour ma réponse, vérifie-la – Alexandr