1. #1
    Avatar von exception
    Registriert seit
    27.03.2012
    Beiträge
    198
    Thanked 57 Times in 36 Posts

    Standard Suche Pattern für JSON String

    Hey,
    folgender String(.json File was dann mit JavaScriptSerializer ausgelesen wird):

    {
    "realm":{"name":"Frostwolf","slug":"frostwolf"},
    "alliance":{"auctions":[
    {"auc":61861645,"item":74700,"owner":"Pétbank","ownerRealm":"Frostwolf","bid":46616,"buyout":51796,"quantity":1,"timeLeft":"VERY_LONG","rand":0,"seed":281448192},
    {"auc":61536691,"item":34086,"owner":"Pétbank","ownerRealm":"Frostwolf","bid":110075,"buyout":120050,"quantity":1,"timeLeft":"VERY_LONG","rand":0,"seed":924187904},
    {"auc":61862171,"item":74700,"owner":"Pétbank","ownerRealm":"Frostwolf","bid":46616,"buyout":51796,"quantity":1,"timeLeft":"VERY_LONG","rand":0,"seed":1790711168},
    {"auc":61536704,"item":34086,"owner":"Pétbank","ownerRealm":"Frostwolf","bid":110075,"buyout":120050,"quantity":1,"timeLeft":"VERY_LONG","rand":0,"seed":2116196096},
    {"auc":61863046,"item":74710,"owner":"Pétbank","ownerRealm":"Frostwolf","bid":115107,"buyout":117485,"quantity":1,"timeLeft":"VERY_LONG","rand":0,"seed":1272660864},
    {"auc":61536469,"item":44087,"owner":"Pétbank","ownerRealm":"Frostwolf","bid":440000,"buyout":450000,"quantity":1,"timeLeft":"VERY_LONG","rand":0,"seed":0}]}
    }


    Versuche schon seit Stunden den Inhalt zwischen [ und ] via RegEx zu bekommen.
    Sprich, als Output will ich folgendes haben:
    {"auc":61861645,"item":74700,"owner":"Pétbank","ownerRealm":"Frostwolf","bid":46616,"buyout":51796,"quantity":1,"timeLeft":"VERY_LONG","rand":0,"seed":281448192},
    {"auc":61536691,"item":34086,"owner":"Pétbank","ownerRealm":"Frostwolf","bid":110075,"buyout":120050,"quantity":1,"timeLeft":"VERY_LONG","rand":0,"seed":924187904},
    {"auc":61862171,"item":74700,"owner":"Pétbank","ownerRealm":"Frostwolf","bid":46616,"buyout":51796,"quantity":1,"timeLeft":"VERY_LONG","rand":0,"seed":1790711168},
    {"auc":61536704,"item":34086,"owner":"Pétbank","ownerRealm":"Frostwolf","bid":110075,"buyout":120050,"quantity":1,"timeLeft":"VERY_LONG","rand":0,"seed":2116196096},
    {"auc":61863046,"item":74710,"owner":"Pétbank","ownerRealm":"Frostwolf","bid":115107,"buyout":117485,"quantity":1,"timeLeft":"VERY_LONG","rand":0,"seed":1272660864},
    {"auc":61536469,"item":44087,"owner":"Pétbank","ownerRealm":"Frostwolf","bid":440000,"buyout":450000,"quantity":1,"timeLeft":"VERY_LONG","rand":0,"seed":0}


    Habe schon etliche Codes probiert aber es klappt einfach nicht...

    MfG


    Edit:
    Super, danke dir!
    Geändert von exception (11.02.2014 um 22:39 Uhr)
    Ich will Geld haben und zwar so viel, das ich auch mal sagen kann das es Wichtigeres gibt...

  2. #2

    Registriert seit
    19.11.2011
    Beiträge
    2.128
    Thanked 1.936 Times in 1.180 Posts

    Standard AW: Suche Pattern

    Dim S As String = Regex.Match(DeinString, "auctions"":\[([^]]+)").Groups(1).Value
    


    Falls Du noch Fragen hast, gerne
    Geändert von !lkay (11.02.2014 um 22:18 Uhr)

  3. The Following User Says Thank You to !lkay For This Useful Post:

    exception (11.02.2014)

  4. #3

    Registriert seit
    18.11.2011
    Beiträge
    226
    Thanked 165 Times in 82 Posts

    Standard AW: Suche Pattern für JSON String

    Wieso keinen JSON serializer nutzen?

  5. The Following User Says Thank You to 3lit For This Useful Post:

    rVs14 (12.02.2014)

  6. #4
    Avatar von exception
    Registriert seit
    27.03.2012
    Beiträge
    198
    Thanked 57 Times in 36 Posts

    Standard AW: Suche Pattern für JSON String

    Tu ich ja, wollte nur den Abschnitt jeder Fraktion einzeln auslesen.

    Falls es wen interessiert, so kann man das WoW-Auktionshaus auslesen:
       Public Class jsonKeys
    Public auc As String
    Public item As String
    Public owner As String
    Public ownerRealm As String
    Public bid As String
    Public buyout As String
    Public quantity As String
    Public timeleft As String
    Public rand As String
    Public seed As String
    End Class

    Public Sub loadAuctionData()
    Try
    fullSource = wClient.DownloadString("http://eu.battle.net/auction-data/47779fa95e3f2cccb9d866fd07e30e2f/auctions.json")
    Catch ex As Exception
    MessageBox.Show("Error 001")
    Exit Sub
    End Try

    Try
    allianceSource = "[" & Regex.Match(fullSource, "alliance"":{""auctions"":\[([^]]+)").Groups(1).Value & "]"
    hordeSource = "[" & Regex.Match(fullSource, "horde"":{""auctions"":\[([^]]+)").Groups(1).Value & "]"
    neutralSource = "[" & Regex.Match(fullSource, "neutral"":{""auctions"":\[([^]]+)").Groups(1).Value & "]"
    Catch ex As Exception
    MessageBox.Show("Error 002")
    Exit Sub
    End Try

    Try
    serializer = New JavaScriptSerializer
    serializer.MaxJsonLength = Integer.MaxValue
    allianceAuctions = serializer.Deserialize(Of List(Of jsonKeys))(allianceSource)
    allianceCount = allianceAuctions.Count

    serializer = New JavaScriptSerializer
    serializer.MaxJsonLength = Integer.MaxValue
    hordeAuctions = serializer.Deserialize(Of List(Of jsonKeys))(hordeSource)
    hordeCount = hordeAuctions.Count

    serializer = New JavaScriptSerializer
    serializer.MaxJsonLength = Integer.MaxValue
    neutralAuctions = serializer.Deserialize(Of List(Of jsonKeys))(neutralSource)
    neutralCount = neutralAuctions.Count
    Catch ex As Exception
    MessageBox.Show("Error 003")
    Exit Sub
    End Try
    End Sub
    Geändert von exception (12.02.2014 um 01:07 Uhr)
    Ich will Geld haben und zwar so viel, das ich auch mal sagen kann das es Wichtigeres gibt...

  7. #5
    Avatar von DMW007
    Registriert seit
    15.11.2011
    Beiträge
    6.219
    Thanked 9.133 Times in 3.007 Posts
    Blog Entries
    5

    Standard AW: Suche Pattern für JSON String

    Was um alles in der Welt machst du da mit den Regex-Pattern? JSON wurde erfunden, damit man solche Frickeleien eben nicht mehr machen muss: Am einen Ende wird serialisiert, als JSON übertragen und am anderen Ende kommt wieder ein Objekt raus mit dem man direkt weiterarbeiten kann. Mit irgendwas einzeln auslesen hat das auch nix zutun, da bekommst du dann halt einen Array mit den jeweiligen Schlüsseln und fertig.
    Regex hat bei dem was du vor hast überhaupt nichts verloren. Und wenn man es einsetzt, prüft man ob das pattern matcht bzw. man prüft den Array mit den Ergebnissen. Einfach alles in einen einen TryCatch-Block zu pfeffern ist sehr schlechter Codingstil und kein vernünftiges Errorhandling, das solltest du dir abgewöhnen.


  8. The Following 6 Users Say Thank You to DMW007 For This Useful Post:

    Benzol (06.06.2014), Festplatte (24.02.2014), KingofRapx3 (23.05.2014), SeBi (12.02.2014), TomatenKetchup (15.02.2014), xOneDirectionx (12.02.2014)

Ähnliche Themen

  1. Antworten: 1
    Letzter Beitrag: 16.12.2013, 09:14
  2. VB.Net Json String richtig parsen???
    Von soulreafer im Forum .Net
    Antworten: 1
    Letzter Beitrag: 06.07.2013, 17:15
  3. [S] Pattern
    Von Mentos im Forum Hochsprachen
    Antworten: 2
    Letzter Beitrag: 08.02.2013, 01:42
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.