Я использую VB.Net, MVC 5. Я создаю объект javaScript, а затем передаю этот объект моему контроллеру с помощью ajax и JSON.Как десериализовать объект JSON, содержащий два массива
Мой объект создается следующим образом:
var myEdits = {
arrayOfIDs: [],
arrayOfValues : []
};
Это, как я отправить объект на сервер:
$.ajax({
url: '/ViewDetails/EditConfirmation',
type: 'POST',
data: { 'myEdits': myEdits }
})
.success(function (result) {
alert("success");
})
.error (function (status) {
alert(status);
})
Моя строка, когда она попадает на сервер выглядит следующим образом:
"{" arrayOfIDs ": [" 53 "," 54 "," 55 "," 56 "]," arrayOfValues ": [" foo "," bar "," narf "," woohoo "]}"
Я попытался создать класс вроде этого:
Function CompareEdits(myEdits As Object) As IEnumerable(Of compareEdits)
Dim serializer As New JavaScriptSerializer()
Dim model As compareEdits
model = serializer.Deserialize(Of compareEdits)(myEdits)
Return model
End Function
End Class
Public Class compareEdits
Public Property arrayOfIDs As List(Of String)
Public Property arrayOfValues As List(Of String)
End Class
Я также попытался десериализации это так:
Function CompareEdits(myEdits As Object) As IEnumerable(Of compareEdits)
Dim serializer As New JavaScriptSerializer()
Dim model
model = serializer.Deserialize(Of Array)(myEdits)
Return model
End Function
Я получаю эту ошибку, когда я пытаюсь десериализации My JSON строка:
{ "Преобразование из типа 'String()' для типа 'строка' не является допустимым."}
Первый массив в строке используется для определения того, какое поле необходимо обновить, второй массив в строке - это фактическое значение.
Как правильно десериализовать эту строку?
Первый, использующий тип 'compareEdits', отлично работает для меня, не ставьте jString в' Object'. Передайте его как '(myEdits As String'), сериализованный вывод - строка. Синус у вас есть 2 массива внутри класса, возвращаемый тип ('IEnumerable') кажется неправильным. – Plutonix
@plutonix вы абсолютно правы – rogerdeuce