2012-05-30 2 views
0

У меня есть веб-сервис, который возвращает результаты в JSON В Javascript я хочу просмотреть эти результаты, чтобы я мог отображать их пользователю.извлекать значения из json string через javascript

я определил следующие классы:

Public Class PointsOfInterest 
    Public Property hotspots() As List(Of Hotspot) 
     Get 
      Return m_hotspots 
     End Get 
     Set(value As List(Of Hotspot)) 
      m_hotspots = value 
     End Set 
    End Property 
    Private m_hotspots As List(Of Hotspot) 
    Public Property errorString() As String 
     Get 
      Return m_errorString 
     End Get 
     Set(value As String) 
      m_errorString = value 
     End Set 
    End Property 
    Private m_errorString As String 
    Public Property errorCode() As Integer 
     Get 
      Return m_errorCode 
     End Get 
     Set(value As Integer) 
      m_errorCode = value 
     End Set 
    End Property 
    Private m_errorCode As Integer 
End Class 

Public Class Hotspot 
    Private m_id As String 
    Public Property id() As String 
     Get 
      Return m_id 
     End Get 
     Set(value As String) 
      m_id = value 
     End Set 
    End Property 

    Public Property anchor() As anchor 
     Get 
      Return m_anchor 
     End Get 
     Set(value As anchor) 
      m_anchor = value 
     End Set 
    End Property 
    Private m_anchor As anchor 


    Public Property text() As textprop 
     Get 
      Return _text 
     End Get 
     Set(value As textprop) 
      _text = value 
     End Set 
    End Property 
    Private _text As textprop 


    Public Property imageURL() As String 
     Get 
      Return _imageURL 
     End Get 
     Set(value As String) 
      _imageURL = value 
     End Set 
    End Property 
    Private _imageURL As String 

    Public Property actions() As List(Of action) 
     Get 
      Return _actions 
     End Get 
     Set(value As List(Of action)) 
      _actions = value 
     End Set 
    End Property 
    Private _actions As List(Of action) 

End Class 

Public Class anchor 
    Public Property geolocation() As geoloc 
     Get 
      Return _geoloc 
     End Get 
     Set(value As geoloc) 
      _geoloc = value 
     End Set 
    End Property 
    Private _geoloc As geoloc 

End Class 

Public Class textprop 
    Public Property title() As String 
     Get 
      Return _title 
     End Get 
     Set(value As String) 
      _title = value 
     End Set 
    End Property 
    Private _title As String 
    Public Property description() As String 
     Get 
      Return _description 
     End Get 
     Set(value As String) 
      _description = value 
     End Set 
    End Property 
    Private _description As String 
    Public Property footnote() As String 
     Get 
      Return _footnote 
     End Get 
     Set(value As String) 
      _footnote = value 
     End Set 
    End Property 
    Private _footnote As String 

End Class 


Public Class geoloc 
    Public Property lat() As String 
     Get 
      Return _lat 
     End Get 
     Set(value As String) 
      _lat = value 
     End Set 
    End Property 
    Private _lat As String 
    Public Property lon() As String 
     Get 
      Return _lon 
     End Get 
     Set(value As String) 
      _lon = value 
     End Set 
    End Property 
    Private _lon As String 
End Class 

Public Class action 
    Public Property uri() As String 
     Get 
      Return _uri 
     End Get 
     Set(value As String) 
      _uri = value 
     End Set 
    End Property 
    Private _uri As String 

    Public Property label() As String 
     Get 
      Return _label 
     End Get 
     Set(value As String) 
      _label = value 
     End Set 
    End Property 
    Private _label As String 
    Public Property contentType() As String 
     Get 
      Return _contentType 
     End Get 
     Set(value As String) 
      _contentType = value 
     End Set 
    End Property 
    Private _contentType As String 
    Public Property method() As String 
     Get 
      Return _method 
     End Get 
     Set(value As String) 
      _method = value 
     End Set 
    End Property 
    Private _method As String 
    Public Property activityType() As Integer 
     Get 
      Return _activityType 
     End Get 
     Set(value As Integer) 
      _activityType = value 
     End Set 
    End Property 
    Private _activityType As Integer 
    Public Property showActivity() As Boolean 
     Get 
      Return _showActivity 
     End Get 
     Set(value As Boolean) 
      _showActivity = value 
     End Set 
    End Property 
    Private _showActivity As Boolean 
    Public Property activityMessage() As String 
     Get 
      Return _activityMessage 
     End Get 
     Set(value As String) 
      _activityMessage = value 
     End Set 
    End Property 
    Private _activityMessage As String 

End Class 

я вернуть их через веб-сервис в формате JSON: http://www.wunderwedding.com/weddingservice.svc/api/?t=1&cid=1&pid=6&lat=52&lng=5&d=10000&city=nijmegen&field1=0&field2=0&field3=0&field4=0&hasphoto=0&hasvideo=0&minrating=0&lang=nl

Теперь, если я, например, хочу прочитать тела свойства 3 результата (в этом case 0348551532) Как я могу это сделать? Это что-то вроде XSLT, где я могу работать с выражениями, чтобы сделать выбор?

+0

Результаты не имеют свойства «tel», они имеют свойство «uri», которое содержит строку '' tel: 0348551532 ". Во всяком случае, общий принцип состоит в том, чтобы проанализировать строку JSON, чтобы создать объект JavaScript («var parsedObj = JSON.parse (yourString);»), а затем обработать результирующий объект. (Например, цикл 'for' может проходить через все свойства.) Было бы более уместным показать образец JSON в вашем вопросе, чем код (не-JS), который его генерирует. – nnnnnn

ответ

1

В JavaScript я использую что-то вроде jQuery или ExtJS, поддерживающего AJAX. После того, как у вас есть JSON на стороне клиента, вы будете декодировать результат веб-службы (используя Ext.decode или eval (""), если вы читаете JSON без специального инструментария).

Как только вы декодируете JSON, он легко доступен в JavaScript.

Пример:

var json = [Function that decodes JSON text]; 
var uriInfo = json.hotspots[2].actions[1].uri; 

Если вы используете FireFox, вы можете установить аддон под названием FireBug. Это позволит вам работать с этим типом вещей. С помощью этого инструмента вы можете вызвать console.dir (json); в JavaScript и посмотреть всю структуру, как видно на javascript и т. д.

+1

Я бы рекомендовал использовать JSON.parse (это доступно во всех современных браузерах и будет быстрым и надежным, чтобы обеспечить поддержку старых браузеров, grab json2.js отсюда: https://github.com/douglascrockford/JSON- js) –

+0

Никогда не декодируйте JSON с eval ... – Bergi

+0

Если вы извлекаете с помощью jQuery Ajax-метода, как было предложено, вам не нужно его анализировать, потому что jQuery делает это за вас, но в противном случае - как и другие пользователи - используйте 'JSON.parse' , а не 'eval'. – nnnnnn

Смежные вопросы