Json.NET - JsonConvert.DeserializeObject ничего не делает - PullRequest
0 голосов
/ 08 мая 2011

Я использую Json.NET для десериализации параметра JSON jQuery.post ().

Исходное значение, которое отправлено обратно, имеет следующий формат

jobs=4-5-6-7&invoiceDate=04-05-11

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

public class InvoiceRequest
{
    public DateTime InvoiceDate { get; set; }
    public string JobList { get; set; }
}

И код, который я использую для этого,

var sr = new System.IO.StreamReader(Request.InputStream);
var line = sr.ReadToEnd();
var deserializedProduct = JsonConvert.DeserializeObject<InvoiceRequest>(line);

Проблема в том, что ничего не происходит, когда эта третья строка нажата. Когда я перебираю код, он достигает этой строки, а затем ... ничего. Степпер исчезает, и страница никогда не получает никакого ответа.

Может кто-нибудь объяснить, что я здесь делаю не так?

Ответы [ 2 ]

4 голосов
/ 08 мая 2011

Следующий запрос application/x-www-form-urlencoded, а не JSON:

jobs=4-5-6-7&invoiceDate=04-05-11

Если вы хотите JSON, запрос должен выглядеть следующим образом:

{ 'jobs': '4-5-6-7', invoiceDate: '04-05-11' }
3 голосов
/ 08 мая 2011

Это не работает, потому что ваши данные не в формате JSON.Либо измените свой JavaScript, чтобы он отправлял данные в формате JSON, либо используйте HttpUtility.ParseQueryString для анализа формата, в котором он находится в данный момент.

...