2010-09-01 1 views
0

Я пытаюсь использовать веб-службу для возврата Json для коллекции пользователей из таблицы базы данных. Я новичок в .NET (< 1 неделя опыта), и я не хочу использовать UpdatePanel для AJAX. Я попытался использовать JavaScriptSerializer, а также Json.NET для сериализации. Оба случая, похоже, порождают бесконечную петлю.Бесконечный цикл, когда Json сериализации коллекции (VB ASP.NET)

Что я делаю неправильно? Есть лучший способ сделать это? Я ценю любые предложения. Благодарю.

Dim myUser As New HagarDB.Users 
    myUser.Read() 

    'Dim jsSerializer As New System.Web.Script.Serialization.JavaScriptSerializer 
    'Dim sbUsers As New System.Text.StringBuilder 
    'jsSerializer.Serialize(myUser, sbUsers) 

    Dim json = JsonConvert.SerializeObject(myUser, Formatting.Indented) 
+0

попробуйте DataContractJsonSerializer. – RPM1984

+0

Спасибо! Это сработало. Теперь я могу сообщить (msg), который показывает, что это объект, но alert (msg.d) показывает Json как строку. Я могу разобрать это как Json на стороне клиента, но есть ли способ сделать это на стороне сервера? Еще раз спасибо. – Brett

ответ

1

Благодаря RPM1984 за предложение DataContractJsonSerializer. Вот рабочий код:

Public Function GetUsers() As String 
    Dim myUser As New HagarDB.Users 
    Dim jsonSerializer As New DataContractJsonSerializer(GetType(HagarDB.Users)) 
    Dim stream As New MemoryStream() 

    myUser.Read() 
    jsonSerializer.WriteObject(stream, myUser) 

    Dim json As String = Encoding.[Default].GetString(stream.ToArray()) 

    stream.Close() 

    Return json 


End Function