Я использовал его для построения объектов, выделенных в стеке через alloca ().
бесстыдный плагин: я написал о нем здесь .
Вы не можете сделать это, потому что эта структура JSON недопустима:
"hotels": { "hotel_id": 9036, "name": "My Hotel Name", ... }, { ... }
Однако вы можете выбрать только значения и сериализовать их:
hotels.Values;
Чтобы получить это:
"hotels": [ { "hotel_id": 9036, "name": "My Hotel Name", ... }, { ... } ]
Учитывая, что это часть класса, вам понадобится новая модель:
public class SomeName
{
public List<Hotel> Hotels { get; set; }
}
var someName = new SomeName
{
Hotels = hotels.Values.ToList();
};
Формат "hotels": { "hotel_id": 9036, "name": "My Hotel Name", ... },..
недопустим, но вы можете сделать его массивом "hotels": [ { "hotel_id": 9036, "name": "My Hotel Name", ... } ]
.
Вы можете сделать это, пометив свой словарь с помощью JsonIgnore и выставив коллекцию отелей, которая содержит значения из словаря отелей.
Например,
var hotel = new Results
{
id= "d875e165-4705-459e-8532-fca2ae811ae0",
HotelDictionary = new Dictionary<int,Hotels> {
[2323]=new Hotels{Id=2323,Name="Sample1"},
[1323]=new Hotels{Id=1323,Name="Sample2"},
}
};
var jsonString = JsonConvert.SerializeObject(hotel,Newtonsoft.Json.Formatting.Indented);
Где Results and Hotels определены как (обратите внимание, я игнорировал другие свойства, чтобы сосредоточиться на словаре, но вы можете добавить их в качестве окончательного решения).
public class Results
{
public string id { get; set; }
[JsonIgnore]
public Dictionary<int,Hotels> HotelDictionary { get; set; }
[JsonProperty("hotels")]
public IEnumerable<Hotels> Hotels => HotelDictionary.Select(x=>x.Value);
}
public class Hotels
{
[JsonProperty("hotel_id")]
public int Id{get;set;}
[JsonProperty("name")]
public string Name{get;set;}
}
Выход
{
"id": "d875e165-4705-459e-8532-fca2ae811ae0",
"hotels": [
{
"hotel_id": 2323,
"name": "Sample1"
},
{
"hotel_id": 1323,
"name": "Sample2"
}
]
}
Я думаю, что проблема может заключаться в том, что вам нужно добавить hotel_id
в качестве свойства объекта Hotel
.
В зависимости от того, откуда поступают ваши данные, это, вероятно, хорошая идея в любом случае, не только в этом случае.