У меня есть веб-жерех API, который возвращает значение в следующем формате:Зачем нужна ошибка Не удается десериализовать текущий объект JSON?
{"idDoc":18,"idDocRipristino":0,"relCau":1,"numDoc":"2","data":"2016-10-17T00:00:00","relTavolo":3,"apertura":"4","orario":"2016-10-17T00:00:00","idAna":0,"nominativo":"5","relOpe":6,"totale":7.0,"note":"8","idAsp":0,"romana":0,"relOpe_Port":0}
И я использую следующий код из Winform Application, чтобы связать данные с DevExpress GridView, но я получаю ошибку ниже :
Additional information: Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'WinFormVB.Documenti[]' because the type requires a JSON array (e.g. [1,2,3]) to deserialize correctly.
Вот мой WinForm код для доступа к API и чтение данных с помощью JSON:
Async Sub GetDocumenti(idDoc As Integer)
Dim Uri As String = "http://localhost:53917/api/Documenti/GetByIdDoc"
Using client = New HttpClient()
Using response = Await client.GetAsync([String].Format("{0}/{1}", Uri, idDoc))
If response.IsSuccessStatusCode Then
Dim DocumentisonData = Await response.Content.ReadAsStringAsync()
GridCtrlDocumenti.DataSource = JsonConvert.DeserializeObject(Of Documenti())(DocumentisonData).ToList()
Else
Dim result = DevExpress.XtraEditors.XtraMessageBox.Show("Sorry no data found!!", "Confirmation Message", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
End If
End Using
End Using
End Sub
Это мой Repository:
public DocumentiModel GetByIdDoc(int id)
{
using (var dbCtx = new USDevEntities())
{
var documenti = dbCtx.Documentis.Where(x => x.IDDoc == id).FirstOrDefault();
if (documenti != null)
{
return ConvertTo(documenti);
}
else
{
return null;
}
}
}
Пожалуйста, предложите мне, как решить эту ошибку. Благодарю.
JSON только один объект, но вы пытаетесь сериализовать его как массив. – Styxxy
Я очень новичок в JSON, не могли бы вы дать мне пример, чтобы решить мою проблему или проиллюстрировать ваш ответ? – barsan
Пожалуйста, покажите класс 'Documenti' – Jim