English 中文(简体)
JSon.Net Json转实体
原标题:JSon.Net Json to entity

I have an entity, I setup the entity with the database you see below as an edmx file. I also have a JSon file that I am pulling from edmunds.com I am using JSon.net and trying to parse the JSon object into the Entity and save the values of the Json to the Entity.

Every option I try to use it seems to blow up on me. Can anyone please provide me a decent example of how to accomplish this as it is driving me insane at this point.

{
   "dealerHolder":[
      {
         "id":"31711",
         "locationId":"3730",
         "address":{
            "street":"24825 US Hwy 19 N",
            "apartment":"",
            "city":"Clearwater",
            "stateCode":"FL",
            "stateName":"Florida",
            "county":"Pinellas",
            "country":"USA",
            "zipcode":"33763",
            "latitude":27.99785,
            "longitude":-82.729321
         },
         "name":"Countryside Ford of Clearwater",
         "logicalName":"CountrysideFordofClearwater",
         "type":"ROOFTOP",
         "make":"Ford",
         "operations":{
            "Wednesday":"8:30 AM-9:00 PM",
            "Tuesday":"8:30 AM-9:00 PM",
            "Thursday":"8:30 AM-9:00 PM",
            "Saturday":"8:30 AM-8:00 PM",
            "Friday":"8:30 AM-9:00 PM",
            "Monday":"8:30 AM-9:00 PM",
            "Sunday":"11:00 AM-5:00 PM"
         },
         "contactinfo":{
            "dealer_website":"http://www.clearwaterford.com/",
            "email_address":"",
            "phone":""
         },
         "publishDate":"2012-05-21",
         "active":true,
         "syncPublishDate":"2012-05-21"
      },
      {
         "id":"31673",
         "locationId":"3708",
         "address":{
            "street":"2525 34th St N",
            "apartment":"",
            "city":"Saint Petersburg",
            "stateCode":"FL",
            "stateName":"Florida",
            "county":"Pinellas",
            "country":"USA",
            "zipcode":"33713",
            "latitude":27.794484,
            "longitude":-82.679411
         },
         "name":"Autoway Ford of St Petersburg",
         "logicalName":"AutowayFordofStPetersburg",
         "type":"ROOFTOP",
         "make":"Ford",
         "operations":{
            "Wednesday":"08:30 AM-08:00 PM",
            "Tuesday":"08:30 AM-08:00 PM",
            "Thursday":"08:30 AM-08:00 PM",
            "Saturday":"09:00 AM-06:00 PM",
            "Friday":"08:30 AM-08:00 PM",
            "Monday":"08:30 AM-08:00 PM",
            "Sunday":"12:00 PM-05:00 PM"
         },
         "contactinfo":{
            "dealer_website":"http://www.autowayford.net/",
            "email_address":"",
            "phone":""
         },
         "publishDate":"2012-05-21",
         "active":true,
         "syncPublishDate":"2012-05-21"
      },
      {
         "id":"31636",
         "locationId":"3684",
         "address":{
            "street":"5815 N Dale Mabry Hwy",
            "apartment":"",
            "city":"Tampa",
            "stateCode":"FL",
            "stateName":"Florida",
            "county":"Hillsborough",
            "country":"USA",
            "zipcode":"33614",
            "latitude":28.00016,
            "longitude":-82.505206
         },
         "name":"Bill Currie Ford",
         "logicalName":"BillCurrieFord",
         "type":"ROOFTOP",
         "make":"Ford",
         "operations":{
            "Wednesday":"8:00 AM-9:00 PM",
            "Tuesday":"8:00 AM-9:00 PM",
            "Thursday":"8:00 AM-9:00 PM",
            "Saturday":"8:00 AM-8:00 PM",
            "Friday":"8:00 AM-9:00 PM",
            "Monday":"8:00 AM-9:00 PM",
            "Sunday":"11:00 AM-6:00 PM"
         },
         "contactinfo":{
            "dealer_website":"http://billcurriedirect.dealerconnection.com/",
            "email_address":"",
            "phone_areacode":"888",
            "phone_postfix":"1156",
            "phone_prefix":"255",
            "phone":"8882551156"
         },
         "publishDate":"2012-05-21",
         "active":true,
         "syncPublishDate":"2012-05-21"
      },
      {
         "id":"31723",
         "locationId":"3739",
         "address":{
            "street":"17556 US 19 N",
            "apartment":"",
            "city":"Clearwater",
            "stateCode":"FL",
            "stateName":"Florida",
            "county":"Pinellas",
            "country":"USA",
            "zipcode":"33764",
            "latitude":27.93164,
            "longitude":-82.730647
         },
         "name":"Walker Ford",
         "logicalName":"WalkerFord",
         "type":"ROOFTOP",
         "make":"Ford",
         "operations":{
            "Wednesday":"8:30 AM-8:00 PM",
            "Tuesday":"8:30 AM-8:00 PM",
            "Thursday":"8:30 AM-8:00 PM",
            "Saturday":"8:30 AM-6:00 PM",
            "Friday":"8:30 AM-8:00 PM",
            "Monday":"8:30 AM-8:00 PM",
            "Sunday":"11:30 AM-6:00 PM"
         },
         "contactinfo":{
            "dealer_website":"http://www.walkerford.com/",
            "email_address":"",
            "phone_areacode":"727",
            "phone_postfix":"3673",
            "phone_prefix":"535",
            "phone":"7275353673"
         },
         "publishDate":"2012-05-21",
         "active":true,
         "syncPublishDate":"2012-05-21"
      }
   ]
}

http://blog.redeyeproject.com/databasiciagram.png" rel=“不跟随 nofollow noreferrerr>http://blog.redeyeproject.com/databasiciagram.png

Here is the most recent Error I get Cannot deserialize JSON object (i.e. {"name":"value"}) into type System.Data.Objects.DataClasses.EntityCollection`1[DealerTentSaleMVC.Models.Operation] . The deserialized type should be a normal .NET type (i.e. not a primitive type like integer, not a collection type like an array or List) or a dictionary type (i.e. Dictionary). To force JSON objects to deserialize add the JsonObjectAttribute to the type. Path operations.Wednesday , line 22, position 19.

此代码正在发生错误 。

            WebClient wc = new WebClient();
        string stws = wc.DownloadString(url);

        JToken root = JObject.Parse(stws);
        JToken dealerholder = root["dealerHolder"];
        DealerHolder convertedProducts = new DealerHolder();
        string dh = dealerholder.ToString().Replace("[", "").Replace("]", "");
        JsonConvert.PopulateObject(dh, convertedProducts, new JsonSerializerSettings 
                                                            { 
                                                                NullValueHandling = NullValueHandling.Ignore

                                                            });

具体地说,它正在发生 在最后一行的最后一行

最佳回答

你可以建立一个能反映JSON的物体结构 也就是你正在试图将它分解的物体结构:

public class Result
{
    public DealerHolder[] DealerHolder { get; set; }
}

public class DealerHolder
{
    public string Id { get; set; }
    public string LocationId { get; set; }
    public Address Address { get; set; }
    public string Name { get; set; }
    public string LogicalName { get; set; }
    public string Type { get; set; }
    public string Make { get; set; }
    public Operations Operations { get; set; }
    public Contact Contactinfo { get; set; }
    public string PublishDate { get; set; }
    public bool Active { get; set; }
    public string SyncPublishDate { get; set; }
}

public class Address
{
    public string Street { get; set; }
    public string Apartment { get; set; }
    public string City { get; set; }
    public string StateCode { get; set; }
    public string StateName { get; set; }
    public string County { get; set; }
    public string Country { get; set; }
    public string ZipCode { get; set; }
    public double Latitude { get; set; }
    public double Longitude { get; set; }
}

public class Operations
{
    public string Wednesday { get; set; }
    public string Tuesday { get; set; }
    public string Thursday { get; set; }
    public string Saturday { get; set; }
    public string Friday { get; set; }
    public string Monday { get; set; }
    public string Sunday { get; set; }
}

public class Contact
{
    public string Dealer_website { get; set; }
    public string Email_address { get; set; }
    public string Phone { get; set; }
}

然后:

string json = .... go and fetch the JSON
Result result = JsonConvert.DeserializeObject<Result>(json);
// do something with the result, like for example enumerating over the 
// dealer holders collection
问题回答

暂无回答




相关问题
Entity Framework with MySQL connector in c#

I have been trying to get the Entity Framework to work in my web application using MySQL. It works fine on my local pc, but doesn t work when I put it on the server. Since the server is a shared ...

How Do I Create And Update A Many To Many Relationship With EF

I am using the Entity Framework with SQL Server. I have a many to many relationship between 2 tables. I have created a join table with just the primary key fields of the 2 tables. In the designer, the ...

Entity Framework with File-Based Database

I am in the process of developing a desktop application that needs a database. The application is currently targeted to SQL Express 2005 and works wonderfully. However, I m not crazy about having ...

Linq to enties, insert foreign keys

I am using the ADO entity framework for the first time and am not sure of the best way of inserting db recored that contain foreign keys. this is the code that i am using, I would appreciate any ...

Entity Framework - Many to many question

I have a table called ASB and a table called PeopleInvolved. There is a junction table called PeopleInvolved_ASB which simply contains an ASBID and a PeopleInvolvedID column. The columns act as a ...

Post back complex object from client side

I m using ASP.NET MVC and Entity Framework. I m going to pass a complex entity to the client side and allow the user to modify it, and post it back to the controller. But I don t know how to do that ...

ADO.NET Entity Data Model are not precise enough

I run this code: var cos = from k in _db.klienci_do_trasy where k.klient_id == 5 select k; but the query send to database is: SELECT * FROM `klienci_do_trasy` LIMIT 0, 30 why is it for, there ...

热门标签