Невозможно десериализовать текущий массив JSON (например, [1,2,3]) в тип
У меня такой класс:
public class MyStok
{
public int STId { get; set; }
public int SM { get; set; }
public string CA { get; set; }
public string Br { get; set; }
public string BNo { get; set; }
public decimal Vat { get; set; }
public decimal Price { get; set; }
}
Я deserilaze, как это;
string sc= e.ExtraParams["sc"].ToString();
MyStok myobj = JSON.Deserialize<MyStok>(sc);
Мне кажется, что мой вывод выглядит так (строка sc) на скрипке
[
{
"STId": 2,
"CA": "hbh",
"Br": "jhnj",
"SM": 20,
"Vat": 10,
"Price": 566,
"BNo": "1545545"
}
]
но я получаю ошибку. Невозможно десериализовать текущий массив JSON (например, [1,2,3]) в тип
что не так в этих кодах.
спасибо.
Ответы
Ответ 1
Похоже, что строка содержит массив с единственным объектом MyStok
. Если вы удаляете квадратные скобки с обоих концов входа, вы можете десериализовать данные как один объект:
MyStok myobj = JSON.Deserialize<MyStok>(sc.Substring(1, sc.Length-2));
Вы также можете десериализовать массив в список объектов MyStok
и взять объект с нулевым индексом.
var myobjList = JSON.Deserialize<List<MyStok>>(sc);
var myObj = myobjList[0];
Ответ 2
Для типа массива Пожалуйста, попробуйте это.
List<MyStok> myDeserializedObjList = (List<MyStok>)Newtonsoft.Json.JsonConvert.DeserializeObject(sc), typeof(List<MyStok>));
Пожалуйста, Подробнее см. здесь в разделе deserialise Json
Ответ 3
HttpClient webClient = new HttpClient();
Uri uri = new Uri("your url");
HttpResponseMessage response = await webClient.GetAsync(uri)
var jsonString = await response.Content.ReadAsStringAsync();
var objData = JsonConvert.DeserializeObject<List<CategoryModel>>(jsonString);