Проблема:
Я просто не могу понять, что не так с JSON ниже.
Ошибка:
'The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or an illegal character among the padding characters.'
Тест:
Я запустил инструмент проверки JSON на нем, и он прошел как действительный JSON. Однако я продолжаю получать ошибку преобразования base-64.
{
"Courier": {
"CourierId": "e168d837-0f0e-4f61-8a3d-725b53d11277",
"Name": "Jeremy Bot",
"ProfileImage": "undefined_image",
"LastLocation": {
"Latitude": 25.87427,
"Longitude": -80.12173
},
"IsSubscribed": true,
"Timestamp": "2020-04-11T19:11:21.1821483-04:00"
},
"Request": {
"RequestId": "78d31dab-e631-4f95-aa31-d95b218a1850",
"Customer": {
"CustomerId": "some_customer_id",
"Name": "John Doe",
"Location": {
"Latitude": 25.87427,
"Longitude": -80.12173
},
"Phone": "(XXX-XXX-XXXX)"
},
"Carriers": {
"Restaurants": [],
"Stores": []
}
},
"ETA": "30 minutes"
}
Тест 2:
Я думал, что причиной может быть отрицательное число в моем JSON.
Однако следующее не сработало:
let handleNegativeValues = JsonSerializerSettings(FloatParseHandling=FloatParseHandling.Decimal)
let payload = JsonConvert.DeserializeObject<'T>(json, handleNegativeValues)
Причина:
Вот код, который я выполняю и который приводит к ошибка:
let payload = JsonConvert.DeserializeObject<'T>(json)
Приложение:
Вот тип root, который я пытаюсь десериализовать в:
[<DataContract>]
type CourierAcceptedSubmission = {
[<field: DataMember(Name="Courier")>]
Courier : Courier
[<field: DataMember(Name="Request")>]
Request : Request
[<field: DataMember(Name="ETA")>]
ETA : string
}
Вот тип, который содержит ProfileImage:
[<DataContract>]
type Courier = {
[<field: DataMember(Name="CourierId")>]
CourierId : string
[<field: DataMember(Name="Name")>]
Name : string
[<field: DataMember(Name="ProfileImage")>]
ProfileImage : string
[<field: DataMember(Name="LastLocation")>]
LastLocation : Coordinate
[<field: DataMember(Name="IsSubscribed")>]
IsSubscribed : bool
[<field: DataMember(Name="Timestamp")>]
Timestamp : DateTime
}