2016-07-24 2 views
1

клиента делает получить запрос Web API затем получить ответ как данные JSon здесь является Тхо запросом и веб-API, что размещает ответ на данные клиента ..не может получить содержимое данных JsonResult

Это метод веб-апите, после ответа на какой-либо процесс после ответа клиенту;

public ActionResult GetBooks(){ 
    ... 
    return new JsonResult() 
     { 
      Data = new { draw = draw, recordsFiltered = totalRecords, recordsTotal = totalRecords, data = booklist }, 
      JsonRequestBehavior = JsonRequestBehavior.AllowGet 
     }; 
} 

и вот клиент получает ответ от веб-API и отправить его для просмотра:

HttpResponseMessage response = client.GetAsync("api/Book/GetBooks/").Result; 
JsonResult result = null; 
if (response.IsSuccessStatusCode) 
{ 
    result = response.Content.ReadAsAsync<JsonResult>().Result; 
} 
List<Book> booklist = null; 

return Json(new { draw = result.Data.draw, recordsFiltered = result.Data.totalRecords, recordsTotal = result.Data.totalRecords, data = result.Data.booklist }, JsonRequestBehavior.AllowGet); 

как вы видите те же свойства, я стараюсь, чтобы получить их с result.Data.propertyName , но не смог.

Я не хочу изменять имена возвращаемых свойств в клиентском методе.

Что мне делать?

здесь ответ (результат). Данные выглядеть следующим образом:

{{ 
    "draw": "1", 
    "recordsFiltered": 670, 
    "recordsTotal": 670, 
    "data": [ 
    { 
     "Title": "A Popular Survey of the Old Testament", 
     "Publisher": "Baker Academic", 
     "Description": "Illustrated with photos, charts, and maps, and written in their understanding of Old Testament people and events.", 
     "Authors": [ 
     "Norman L. Geisler" 
     ], 
     "Id": "579273aa2711d31de88933bd" 
    }, 

    { 
     "Title": "A Village on the Moon/Um Povoado Na Lua", 
     "Publisher": "Trafford Publishing", 
     "Description": "Since the beginning of time, mankind has looked up at the Moon and wondered. Many have seen figures on that light in the sky and universo. Um grupo de aventureiros se propôs a colonizar esse planeta e aqui está a sua história.", 
     "Authors": [ 
     "Charles A. Hindley" 
     ], 
     "Id": "579273aa2711d31de8893438" 
    } 
    ] 
}} 

в нужном формате JSON мы можем получить данные с result.Data.draw и result.Data.data[0], но в этом случае я в беде ..

как удалить лишние области?

+0

Ваш вопрос непонятен. что вы спрашиваете. какова дополнительная область, которую вы хотите удалить – Nkosi

+0

Здравствуйте, проверьте, что даха начинается с «{{« двойные области ... это неправильно ». Я не понимаю, почему это произошло и как я могу исправить это. – TyForHelpDude

+0

Теперь я понимаю, что вы спрашивают. – Nkosi

ответ

1

Используя внутренний объем, для клиента могут быть получены следующие модели.

public class BookData 
{ 
    public string Title { get; set; } 
    public string Publisher { get; set; } 
    public string Description { get; set; } 
    public string[] Authors { get; set; } 
    public string Id { get; set; } 
} 

public class GetBooksResult 
{ 
    public string draw { get; set; } 
    public int recordsFiltered { get; set; } 
    public int recordsTotal { get; set; } 
    public BookData[] data { get; set; } 
} 

С этой

HttpResponseMessage response = await client.GetAsync("api/Book/GetBooks/"); 
GetBooksResult result = null; 
if (response.IsSuccessStatusCode) 
{ 
    result = await response.Content.ReadAsAsync<GetBooksResult>(); 
} 
return Json(result, JsonRequestBehavior.AllowGet); 

на клиенте отклик сырая строка JSON возвращается Сформируйте Web API. Нет необходимости в JsonResult. Вы анализируете данные, возвращаемые в модели на стороне клиента, и передаете их.