0

私はc#を初めて使用し、次の行でInvalidCastExceptionが発生するという問題がありますAddresses address = (Addresses)serializer.ReadObject(e.Result);

namespace My_App
{
    [DataContract]
    public class Addresses
    {
        [DataMember(Name = "line1")]
        public string line1
        {
            get;
            set;
        }
        [DataMember(Name = "line2")]
        public string line2
        {
            get;
            set;
        }
        [DataMember(Name = "postcode")]
        public string rpostcode
        {
            get;
            set;
        }
        [DataMember(Name = "city")]
        public string city
        {
            get;
            set;
        }
        [DataMember(Name = "state")]
        public string state
        {
            get;
            set;
        }    
    }


    public partial class sim : PhoneApplicationPage
    {

        public sim()
        {

            InitializeComponent();
        }

        private void Button_Tap(object sender, System.Windows.Input.GestureEventArgs e)
        {
                 var webClient = new WebClient();

                    webClient.OpenReadCompleted += OnOpenReadCompleted;

                    webClient.OpenReadAsync(new Uri("http://www.myurl" UriKind.Absolute));

        } 

    }

    private void OnOpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
    {
            var serializer = new DataContractJsonSerializer(typeof(Addresses));
            Addresses address = (Addresses)serializer.ReadObject(e.Result);

    }

}
}

JSON:

[
    {
        "@type": "accountAddress",
        "line1": " 1",
        "line2": "NORWICH ROAD",
        "postcode": "NR1 1AU",
        "city": "NORWICH",
        "state": "NORFOLK"
    },
    {
        "@type": "accountAddress",
        "line1": " 2",
        "line2": "NORWICH ROAD",
        "postcode": "NR1 1AU",
        "city": "NORWICH",
        "state": "NORFOLK"
    },
    {
        "@type": "accountAddress",
        "line1": " 3",
        "line2": "NORWICH ROAD",
        "postcode": "NR1 1AU",
        "city": "NORWICH",
        "state": "NORFOLK"
    }
]

これは、listpickerオブジェクトで使用するのに適した形式である必要があります。どんな助けでも大歓迎です。

4

1 に答える 1

1

ここでの問題は、JSONに一連のアドレスがあり、1つのアドレスにのみアクセスしようとしていることです。つまり、シリアライザーはアドレスのリストを返しますが、それを単一のアドレスオブジェクトに変換しようとしています。

したがって、コードを次のようなものに変更します。

List<Addresses> addressList = (List<Addresses>)serializer.ReadObject(e.Result);

そして最終的に必要なのは、ListPickerにバインドするためのリストまたはコレクションです。

于 2012-06-27T05:53:27.607 に答える