teledexterus Ответов: 1

Символьная константа должна содержать ровно один символ.


Получение ошибки на подчеркнутых частях:
"Character constant must contain exactly one character."

Dim serializer = New System.Web.Script.Serialization.JavaScriptSerializer()
Dim datae As List(Of datapart) = serializer.Deserialize(Of List(Of datapart))(datar)
For Each element In datae
    oo += 1
    dataa(oo, 1) = Convert.ToInt32(element.id)
    datestring(oo) = element.datetime
    dataa(oo, 2) = Convert.ToInt32(element.col1)
    dataa(oo, 3) = Convert.ToInt32(element.col2)
    dataa(oo, 4) = Convert.ToInt32(element.col3)
Next
Dim returndata As New List(Of datapart)()
For i As Integer = 1 To oo
    If datestring(i) = date1 Then
        json1 = "[{" + "\"" + "id" + "\"" + ":" + dataa(i, 1) + "," + "\"" + "datetime" + "\"" + ":" + datestring(i) + "," + "\"" + "col1" + "\"" + ":" + dataa(i, 2) + "," + "\"" + "col2" + "\"" + ":" + dataa(i, 3) + "," + "\"" + "col3" + "\"" + ":" + dataa(i, 3) + "}]"
    End If
Next
Return serializer.Serialize(json1)


Что я уже пробовал:

Сделал все целые числа класса целыми числами, а строки класса строками.

1 Ответов

Рейтинг:
7

Dave Kreskowiak

МММ ... в VB.NET, если вы должны поместить кавычки в строку, то escape-последовательность состоит из двух символов кавычек подряд. VB.NET не знает, что значит"\", А C# знает.

Кроме того, вам действительно не нужно использовать всю эту конкатенацию строк. Вы можете упростить его довольно легко. О, и конкатенация в VB.NET делается с помощью '&', а не '+'.

json1 = "[{""" + id + "":" & dataa(i, 1) & ",""datetime"":" & datestring(i) & ...

Но зачем вы вообще собираете такую строку json? Это было бы гораздо более гибко, если бы вы создали соответствующую модель данных для сериализации в json. Тогда бы ты вообще не возился со струнами.

Вам звонят serializer.Serialize(json1) это не сериализация данных. Это сериализация строки, которую вы собрали. Это не одно и то же.