Используйте JavaScriptSerializer для десериализации объекта при переносе JSON - PullRequest
1 голос
/ 13 июня 2011

Образец JSON:

{
  "1":{
       "guid":"8a40135230891fa70130891ff1000009",
       "portalId":23832
      }
}

Код, который я использую для десериализации:

var serializer = new JavaScriptSerializer();
var lead = serializer.Deserialize<WebHookResponse>([json]);

Код, который я использую с кодом десериализации:

public class WebHookResponse
{
  public HubspotRecord Record { get; set; }
}

Код, который составляет HubspotRecord, пропущен. Когда я запускаю процесс на данных JSON, которые не заключены в «1», он работает отлично.

В настоящее время я думаю, что моя проблема в том, что json заключен в «1». Я не могу использовать атрибуты с JavaScriptSerializer и не могу создать корневой элемент, помеченный как «1» из-за соглашений об именах.

Есть мысли?

1 Ответ

3 голосов
/ 13 июня 2011

Попробуйте дать десериализации это сделать Dictionary<string, HubspotRecord> или Dictionary<string, WebHookResponse>.Я не могу сказать, что много использовал JavaScriptSerializer, но я ожидаю, что он создаст запись в базе данных с ключом «1» и соответствующим значением.В любом случае, стоит попробовать:)

В качестве альтернативы вы можете загрузить его в Json.NET в DOM-подобную структуру и просто десериализовать тот бит, который вам действительно нужен.

...