#c# #json #javascriptserializer
#c# #json #javascriptserializer
Вопрос:
Пример 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:
Попробуйте дать десериализации это сделать Dictionary<string, HubspotRecord>
или Dictionary<string, WebHookResponse>
. Я не могу сказать, что JavaScriptSerializer
часто использовал, но я ожидаю, что он создаст запись в базе данных с ключом «1» и соответствующим значением. В любом случае стоит попробовать 🙂
В качестве альтернативы вы можете захотеть загрузить его в Json.Преобразуйте в DOM-подобную структуру и просто десериализуйте тот бит, который вам действительно нужен.
Комментарии:
1. Быстрый ответ. И очень хороший.
var dictionary = serializer.Deserialize<Dictionary<string, HubspotRecord>>(result);
2. Превосходно ! У меня возникали исключения при попытке использовать jarrays на устройстве iOS с помощью Xamarin / JSON.Net. Это решение было хорошей альтернативой.