Невозможно десериализовать массив объектов из JSON в объект C # - PullRequest
3 голосов
/ 02 сентября 2010

У меня проблемы с получением JavascriptSerializer для десериализации массива объектов.Я не совсем уверен, что мне не хватает.

Вот мой объект ...

public class HomefinderResult
{
    public Data data;
    public List<Listing> listings;
    public Status status;


    public class Listing
    {
        public string recordingDate;
        public Buyer buyer;
        public double distance;
        public string id;

        public class Buyer
        {
            public Address address;
            public string phone;
            public string firstName;
            public string lastName;

            public class Address
            {
                public string line1;
                public string city;
                public string state;
                public string zip;
                public string county;
                public string latitude;
                public string longitude;

            }
        }
    }

    public class Data
    {
        public Meta meta;
        public class Meta
        {
            public int totalMatched;
            public int totalPages;
            public int currentPage;
            public double executionTime;
        }
    }

    public class Status
    {
        public int code;
        public string[] errorStack;
    }
}

и вот ответ json, который я пытаюсь десериализовать ...

     {
     "data":{
        "meta":{
           "totalMatched":126,
           "totalPages":7,
           "currentPage":1,
           "executionTime":0.26153302192688
        },
        "listings":[
         {
            "recordingDate":"2010-06-07",
            "buyer":{
               "address":{
                  "line1":"999 Meadow Rd",
                  "city":"Oak Ridge",
                  "state":"TN",
                  "zip":"99999",
                  "county":"Anderson",
                  "latitude":"99.0316920000",
                  "longitude":"-99.2476320000"
               },
               "phone":"9995551234",
               "firstName":"xxx",
               "lastName":"xxx"
            },
            "distance":18.088793566409,
            "purchasePrice":"975000",
            "id":"70a706d46c5e1db7417b78c159467431"
         },

         {
            "recordingDate":"2010-06-04",
            "buyer":{
               "address":{
                  "line1":"999 Willow Ln",
                  "city":"Oak Ridge",
                  "state":"TN",
                  "zip":"99999",
                  "county":"Anderson",
                  "latitude":"99.0045700000",
                  "longitude":"-99.3182850000"
               },
               "firstName":"xxx",
               "lastName":"xxx",
               "gender":"Female"
            },
            "distance":22.244494041996,
            "purchasePrice":"201000",
            "id":"dda41ec8150c8648a7e9926b2c5fd468"
         }
      ]
   },
   "status":{
      "code":200,
      "errorStack":null
   }
}

Что я делаю неправильно?

Ответы [ 2 ]

1 голос
/ 04 сентября 2010

После перехода на JSON.NET и возникновения такой же проблемы я ушел на несколько минут и вернулся. Я нашел свою проблему - мне нужно было разместить листинг внутри данных, а не на том же уровне.

0 голосов
/ 02 сентября 2010

У вас есть 3 класса, но одна обертка, поэтому вам нужен класс, который обертывает остальные 3, чтобы соответствовать вашему корневому уровню "класса" в JSON.

...