2016-05-26 6 views
1

У меня возникли проблемы с некоторой десериализацией, потому что я не получаю объект, как я привык, но массив. Позволяет коду, как я делаю это время:Strange JSON Deserialization C#

JSON получил:

[{"gcm_regID":"fsdf2156fw62f1wfwe512g"}] 

Десериализация

var result = JsonConvert.DeserializeObject<Gcm>(response); 

Обработчики Пробовал:

public class Gcm 
{ 
    public List<Gcm_reg> gcm_regID { get; set; } 
} 
public class Gcm_reg 
{ 
    public string gcm_regID { get; set; } 
} 

Я пробовал только Gcm_reg, и ничего не работает. Как я могу десериализовать это? Кстати, я использую newsoft JSON.

С наилучшими пожеланиями,

ответ

4
IEnumerable<Gcm_reg> result = JsonConvert.DeserializeObject<IEnumerable<Gcm_reg>>(response); 

Вы можете десериализации объекта как массив или IEnumerable

+0

Это сработало. Можете ли вы объяснить, как я могу создать похожие объекты для отправки? Сервер дерьмовый, и я пытаюсь делать сообщения, но он получает тот же вид JSON, начиная с [ – Antoine

+0

, создавая массив объекта, который вы хотите отправить, а затем сериализуйте его. например JsonConvert.SerializeObject (new [] {whateverobject_instance}) –

+0

, чтобы отправить определение типа Gcm_reg и заполнить список с помощью метода Добавить и отправить список на сервер –

2

Объект должен быть как

public class Gcm 
{ 
    public string gcm_regID { get; set; } 
} 

Так Попробовать

var result = JsonConvert.DeserializeObject<IEnumerable<Gcm>>(response); 

Вы можете непосредственно создавать классы из Json с помощью link

Чтобы создать такой же тип объекта

var outputList = new List<Gcm>(); 

//loop through this part based on number of input 
var itemToAdd = new Gcm(); 
itemToAdd .regID = 'something'; 
outputList.Add(itemToAdd); 

и отправьте outputList на сервер.

+0

Спасибо, я использую это, но он не работал свой из-за того, что я здесь :(Http: // изображение .prntscr.com/image/3f1129357ee446a98e39131749279845.png вы можете видеть, что я использую класс Gcm_reg и ничего – Antoine

+0

@Antoine пропустил часть массива .. исправлено ... попробуйте еще раз –

+0

Теперь это работает :) Можете ли вы объяснить мне, как могу ли я создать подобный запрос? Сервер получает только этот тип информации вместо обычных объектов. -0- – Antoine