Невозможно десериализовать результат JSON в C#. Входная строка не в правильном формате ошибка
Я пытаюсь десериализовать вывод json в объект C#.
Результат JSON:
{"order":{"commission":3.490000,"cost":4.490000,"duration":"day","extended_hours
":false,"fees":0.000000,"class":"equity","price":1.000000,"quantity":1.000000,"r
equest_date":"2013-11-26T09:43:17.118Z","result":true,"side":"buy","status":"ok"
,"symbol":"DIS","type":"limit"}}
Мой производный класс от JSON:
public class Rootobject
{
public Order Order { get; set; }
}
public class Order
{
public float commission { get; set; }
public float cost { get; set; }
public string duration { get; set; }
public bool extended_hours { get; set; }
public int fees { get; set; }
public string _class { get; set; }
public int price { get; set; }
public int quantity { get; set; }
public DateTime request_date { get; set; }
public bool result { get; set; }
public string side { get; set; }
public string status { get; set; }
public string symbol { get; set; }
public string type { get; set; }
}
Код, используемый для десериализации (JSON.NET от Newtonsoft):
Rootobject ord = JsonConvert.DeserializeObject<Rootobject>(responsebody);
Я получаю следующую ошибку.
Unhandled Exception: System.FormatException: Input string was not in a correct format.
at Newtonsoft.Json.Utilities.ConvertUtils.Int32Parse(Char[] chars, Int32 start, Int32 length)
at Newtonsoft.Json.JsonTextReader.ParseNumber()
at Newtonsoft.Json.JsonTextReader.ParseValue()
at Newtonsoft.Json.JsonTextReader.ReadInternal()
at Newtonsoft.Json.JsonReader.ReadAsInt32Internal()
at Newtonsoft.Json.JsonTextReader.ReadAsInt32()
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.ReadForType(Jso
nReader reader, JsonContract contract, Boolean hasConverter)
Я попытался сохранить десериализованный результат в "динамический" объект, который отлично работает. Но я не хочу использовать динамический объект для отображения полей.
Пожалуйста, совет.
Примечание: также сторонний API посылает поле называется "класс". Как я могу вызвать это, поскольку я получаю ошибку времени компиляции, когда я пытаюсь напрямую вызвать поле.
1 ответ:
У вас есть свойство
feesв классеOrder, определяемое какint, но в тексте JSon это0.00000, т. е.floatилиdouble. Я думаю, что вам может понадобиться превратить свойствоfeesвfloat, Чтобы правильно его проанализировать. То же самое относится и к свойствамpriceиquantity.
Comments