Преобразование из json в список <object> вызывающее исключение
Итак, вот моя проблема, у меня есть настройка API, которая возвращает результаты из таблицы хранения Azure в формате строки JSON:
[{
"CustID": "f3b6.....0768bec",
"Title": "Timesheet",
"CalendarID": "AAMkADE5ZDViNmIyLWU3N2.....pVolcdmAABY3IuJAAA=",
"PartitionKey": "Project",
"RowKey": "94a6.....29a4f34",
"Timestamp": "2018-09-02T11:24:57.1838388+03:00",
"ETag": "W/\"datetime'2018-09-02T08%3A24%3A57.1838388Z'\""
}, {
"CustID": "5479b.....176643c",
"Title": "Galaxy",
"CalendarID": "AAMkADE5Z.......boA_pVolcdmAABZ8biCAAA=",
"PartitionKey": "Project",
"RowKey": "f5cc....86a4b",
"Timestamp": "2018-09-03T13:02:27.642082+03:00",
"ETag": "W/\"datetime'2018-09-03T10%3A02%3A27.642082Z'\""
}]
И я пытаюсь преобразовать его обратно в объект проекта:
public class Project : TableEntity
{
public Project() { }
public Project(string rKey, string pKey = "Project")
{
this.PartitionKey = pKey;
this.RowKey = rKey;
}
public Guid CustID { get; set; }
public string Title { get; set; }
public string CalendarID { get; set; }
}
Я продолжаю получать "Ошибка преобразования значения из" строки "в" объект ".
Я пробовал: это, это, это, это, это, это и это, и это не сработает. Всегда такая же ошибка. Очевидно, что я что-то упускаю, но прошло уже два дня, и я не могу понять, как это понять. Попробовали модифицировать класс объекта для включения всех полей, попробовали добавить еще один класс с свойством списка, даже попытались передать его как Массив.
В этот момент я был бы признателен за любую помощь.
Ответы
Ответ 1
Проблема в том, что у вас есть строка CustID
которую нельзя десериализовать в Guid
.
Вы можете использовать JsonConverter
для преобразования string
в Guid
по десериализации (доступно в JSON.NET
):
public class GuidJsonConverter : JsonConverter<Guid>
{
public override void WriteJson(JsonWriter writer, Guid value, JsonSerializer serializer)
{
writer.WriteValue(value.ToString());
}
public override Guid ReadJson(JsonReader reader, Type objectType, Guid existingValue, bool hasExistingValue, JsonSerializer serializer)
{
string s = (string)reader.Value;
return new Guid(s);
}
}
Два способа его использования:
Ответ 2
Используйте string
вместо Guid
:
public string CustID { get; set; }
Как говорится в ошибке: Error converting value string to object
, единственный объект, который у вас есть, - это Guid
которого, вероятно, есть проблема с десриализацией строки в нем.