dotnet çekirdek çerçeve ile MVC6 projesi ile bir REST api var. Ben bir diziye içine bazı sorgu parametrelerini serisini çalışıyorum aşağıdaki GET isteği olsun:Primitives.StringValues - bir dizi içine bir diziye benzeyen değeri nasıl deserialize nasıl
http://localhost:53384/api/things?sortModel=%7B%22colId%22:%22arrivalDate%22,%22sort%22:%22asc%22%7D&sortModel=%7B%22colId%22:%22arrivalPortCode%22,%22sort%22:%22desc%22%7D
sıralama modeli anahtar (sütun id) değeri ("asc" veya "desc" içeren bir dizidir) çifti ve bu sorgu parametresini için çalışıyorum bir List<SortModel>
varlık dönüştürüldü:
IReadableStringCollection paramsCollection = Request.Query;
0123: kontrol de
public class SortModel
{
public string ColId { get; set; }
public string Sort { get; set; }
}
, beraber sorgu parametresi ayıklamak
Ama sonra çalışmak için bu yöntemi gerekir:
sortModel dize bu anahtarın paramsCollection değeri aşağıdaki değere sahip birMicrosoft.Extensions.Primitives.StringValues
gibi görünüyor olsa da
[]
ile ne de
{}
ile sarılmış olmadığını
IEnumerable<SortModel> sortModel = GetSortModel(paramsCollection["sortModel");
private IEnumerable<SortModel> GetSortModel(string sortModel)
{
// the sortModel string looks like this: "{\"colId\":\"arrivalDate\",\"sort\":\"asc\"},{\"colId\":\"arrivalPortCode\",\"sort\":\"desc\"}"
var deserialized = JsonConvert.DeserializeObject<List<SortModel>>(sortModel); //this throws an exception but the exception itself is null
return deserialized;
}
Uyarı: {{"colId":"arrivalDate","sort":"asc"},{"colId":"arrivalPortCode","sort":"desc"}}
Değerin neden yerine []
ile tamamlandığından emin değilsiniz, ancak istekte bu şekilde bulunur.