I am getting JSON data from a webservice. it is providing me with FORM DATA with different questions and answers. every answer is a different c# object. I am trying to find the best way to map the ANSWERS to correct c# object.
for example if Question Id is "37" Then its a Address Object.
I have JSON String like in this format below
"answers": {
    "37": {
              "name": "yourAddress37",
              "order": "6",
              "sublabels": "{\"cc_firstName\":\"First Name\",\"cc_lastName\":\"Last Name\",\"cc_number\":\"Credit Card Number\",\"cc_ccv\":\"Security Code\",\"cc_exp_month\":\"Expiration Month\",\"cc_exp_year\":\"Expiration Year\",\"addr_line1\":\"Street Address\",\"addr_line2\":\"Street Address Line 2\",\"city\":\"City\",\"state\":\"State \\/ Province\",\"postal\":\"Postal \\/ Zip Code\",\"country\":\"Country\"}",
              "text": "Your Home Address:",
              "type": "control_address",
              "answer": {
                "addr_line1": "148 east 38st ",
                "addr_line2": "",
                "city": "Brooklyn ",
                "state": "Ny",
                "postal": "11203",
                "country": ""
              },
              "prettyFormat": "Street Address: 148 east 38st <br>City: Brooklyn <br>State / Province: Ny<br>Postal / Zip Code: 11203<br>"
            },
     "38": {
              "name": "emergencyContact",
              "order": "9",
              "sublabels": "{\"prefix\":\"Prefix\",\"first\":\"First Name\",\"middle\":\"Middle Name\",\"last\":\"Last Name\",\"suffix\":\"Suffix\"}",
              "text": "Emergency Contact Name:",
              "type": "control_fullname",
              "answer": {
                "first": "Pauline ",
                "last": "Sandy "
              },
              "prettyFormat": "Pauline  Sandy "
            }
}
and it MAPS to following c# property
public Dictionary<int, answer> answers{ get; set; }
Then I have a generic Answer class
public class answer
{
    public string name { get; set; }
    public dynamic answer { get; set; }
}
if you look at the ANSWER data from json then you will see its different for every question. for example one answer would be ADDRESS OBJECT, other answer would be FIRST & LAST NAME object.
my question is, how can i deserialize json into correct objects/properties automatically? I can create different POCO objects, such as address & ProfileName, but how would i map them automatically to correct object/property.
EDIT:
Loop through all Answers
        foreach (var a in item.answers)
        {
            // pass the ANSWER OBJECT (dynamic data type) to function
            createNewApplication(System.Convert.ToInt16(a.Key), a.Value.answer,ref app);               
        }
private void createNewApplication(int key, dynamic value,ref HcsApplicant app)
{
    if (key == 4) // data is plain string
        app.yourPhone = value;
    if (key == 8)
        app.yourEmail = value;
    if (key==37) // data is a object
        app.address = value.ToObject<address>();
}
is this approach OK? any cleaner way of doing it?