Zurück   BuHa-Security Board > Programmierung und Software-Entwicklung > Algorithmen und sonstige Programmiersprachen
Registrieren Hilfe Benutzerliste Kalender Suchen Heutige Beiträge Alle Foren als gelesen markieren


Antwort
 
Themen-Optionen Ansicht
Alt 20.01.2010, 16:23   #1
dexcs
Registered User

 
Registriert seit: Mar 2001
Karma: 189 dexcs liegt in der Wertung
[ruby] Pseudo JSON Format

Ich bin gerade an einem ziemlich miesen Problem gelandet. Und zwar stellt eine Firma (deren Name ich jetzt mal weglasse, will nicht auch noch Werbung für die machen ^^) eine API z.V. über die ich ein paar Sachen abfragen muss.

Meine Webapp läuft mit ruby /rails und ich bekomme so etwas hier zurück:

Code:
{success:"false",code:"300",dataType:"object",objClass:"Message",data:{text:"Username and Password do not match"}}
Ich war am Anfang ja froh über JSON, weil es bis jetzt immer gut funktioniert hat aber nachdem mir mein Ruby Compiler einen haufen Fehler um die Ohren geworfen hat habe ich mir das mal genauer angeschaut und gemerkt das "richtiges" JSON Anführungszeichen um alles macht.

Code:
{"success":"false","code":"300","dataType":"object" ...
Das währe also richtig, und ich könnte daraus ein Objekt machen.

Leider ist es nicht möglich bei $Firma anzufragen ob Sie das umstellen.

Ich steh jetzt ein bisschen auf dem Schlauch, jede Möglichkeit die mir eingefallen ist (JSON Parser umschreiben usw...) ist mir ehrlich gesagt zu kompliziert.

Vielleicht kennt ja einer von euch eine einfachere Möglichkeit und kann mir helfen.

Gruß Max
__________________
Wenns nicht an den Ohren liegt, liegts an der Materie dazwischen...
dexcs ist offline   Mit Zitat antworten
Alt 20.01.2010, 17:10   #2
Shakademus
Member

 
Registriert seit: May 2004
Karma: 831 Shakademus ist eine Bereicherung fuer die Gemeinschaft.
Re: [ruby] Pseudo JSON Format

Naja, durch eine Ersetzungsfunktion jagen und dann erst dem JSON-Parser übergeben - oder spricht was dagegen?

PERL-like q'n'd: /([a-zA-Z])+:/ -> /"$1":/
Shakademus ist offline   Mit Zitat antworten
Alt 21.01.2010, 07:48   #3
dexcs
Registered User

 
Registriert seit: Mar 2001
Karma: 189 dexcs liegt in der Wertung
Re: [ruby] Pseudo JSON Format

Das ich ehrlich gesagt keine Möglichkeit sehe das mit nem regex zu machen (kann ich auch net besonders gut).

Dein Regex würde doch dem Value auch 2 Anführungszeichen verpassen, oder net?

Edit: Erst lesen dann fragen max.... Danke dir, mit so nem regex gehts natürlich ;-)
__________________
Wenns nicht an den Ohren liegt, liegts an der Materie dazwischen...

Geändert von dexcs (21.01.2010 um 07:48 Uhr). Grund: zu schnell geantwortet...
dexcs ist offline   Mit Zitat antworten
Alt 21.01.2010, 10:17   #4
cracki
Registered User

 
Registriert seit: Apr 2005
Karma: 564 cracki ist eine Bereicherung fuer die Gemeinschaft.
Re: [ruby] Pseudo JSON Format

bis mal ein doppelpunkt IN einem string vorkommt... dann knallts.

regexps koennen hier aus theoretischen ueberlegungen (regulaere vs. kontextfreie sprachen) nichts reissen.
__________________
char l[]="\x16..\x0e\\\xf4\xf4.\x96v\x9e\xaeN6t\xc6" "\xf6\xb6\xf4L\xe6\x9c\xb6\x8e\x16",I,*i=l
-1;for(;I=3,*++i;)while(*i=*i&~(1<<I|1<<7-I)|(*i&1<<I)<<7-I-I|(*i&1<<7-I)>>7-I-I,I--);puts(l);
cracki ist offline   Mit Zitat antworten
Alt 21.01.2010, 10:25   #5
dexcs
Registered User

 
Registriert seit: Mar 2001
Karma: 189 dexcs liegt in der Wertung
Re: [ruby] Pseudo JSON Format

Genau das hatte ich gerade ;-) Ich bekomme nämlich manchmal eine URL zurückgeliefert ;-)

Was empfiehlst du mir dann? Ich bin immer noch auf der suche nach einer "richtigen" Lösung...
__________________
Wenns nicht an den Ohren liegt, liegts an der Materie dazwischen...
dexcs ist offline   Mit Zitat antworten
Alt 21.01.2010, 10:32   #6
Shakademus
Member

 
Registriert seit: May 2004
Karma: 831 Shakademus ist eine Bereicherung fuer die Gemeinschaft.
Re: [ruby] Pseudo JSON Format

Also um auf alles vorbereitet zu sein, wirst Du um einen eigenen bzw. einen modifizierten Parser nicht herumkommen.

Wenn Du gewisse Einschränkungen machen kannst, kannst Du auch eine passende RexEx-Ersetzung finden.

Z. B.: Wenn in Werten keine Kommata vorkommen (sprich: kein Komma in Strings und keine Arrays), kannst Du z. B. die einzelnen {}-Bereich an den Kommata aufbrechen und in jedem Teilbereich /^([a-zA-Z])+:/ ersetzen. Arrays könntest Du vorher auch getrennt behandeln. Dann wirds aber auch recht bald schon zum Parser.
Shakademus ist offline   Mit Zitat antworten
Alt 21.01.2010, 10:37   #7
destructor
Registered User
NewYearsChallenge Sieger 2010

 
Registriert seit: Oct 2002
Karma: 418 destructor ist eine Bereicherung fuer die Gemeinschaft.
Re: [ruby] Pseudo JSON Format

Man könnte den RegExp noch etwas erweitern und beispielsweise verlangen, dass vor den Zeichen a-zA-Z ein '{'oder ein ',' steht, aber das löst das Problem ja nicht komplett.

Was man aber machen könnte um die Einschränkungen von regulären Ausdrücken zu umgehen ist den String halbautomatisch von RegExps ersetzen zu lassen auf folgende Weise:
Code:
1: Bestimme den Index des ersten '"'
2: Ersetze mit dem RegExp alle Vorkommen bis da hin oder bis zum Stringende. (Wenn bis zum Stringende ersetzt wurde, dann sind wir fertig)
3: Suche nach dem schließenden '"' und überspringe dabei alle '"', die korrekt escaped sind
4: Beginne wieder mit Schritt 1
__________________
destructor
destructor ist offline   Mit Zitat antworten
Alt 21.01.2010, 12:26   #8
dexcs
Registered User

 
Registriert seit: Mar 2001
Karma: 189 dexcs liegt in der Wertung
Re: [ruby] Pseudo JSON Format

Alter Schwede, das sich dass zu so einem Bumerang entwickelt hätte ich nicht gedacht. Aber wahrscheinlich muss ich es so machen. Mit regex allein komm ich da auf keinen grünen Zweig.

Vielen Dank euch....

Max
__________________
Wenns nicht an den Ohren liegt, liegts an der Materie dazwischen...
dexcs ist offline   Mit Zitat antworten
Alt 21.01.2010, 14:25   #9
Smartie
Moderator

 
Registriert seit: Jul 2000
Karma: 976 Smartie ist eine Bereicherung fuer die Gemeinschaft.
Re: [ruby] Pseudo JSON Format

ist json nicht äquivalent zu nem xml-format? dann wird man mit regex auch nicht glücklich, ausserdem sollte es davon converter geben, bzw. processors die die gewünschten elemente zurückggeben..
Smartie ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge anzufügen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Ruby] Ruby 1.8.2 released! Bunny Algorithmen und sonstige Programmiersprachen 3 19.05.2007 10:04
pseudo- transparentes JPanel Acidtraxx Java 0 18.04.2006 16:11
Problem mit pseudo terminals TMoS UNIX/Linux 2 23.11.2005 17:21
Pseudo-Desktoperweiterung (via VNC?) rfk Windows 2 20.11.2005 01:09
[php] Problem mit Pseudo-Template-Parser 13pixelchen PHP, Perl und ASP 1 11.12.2004 19:30


Alle Zeitangaben in WEZ +2. Es ist jetzt 02:08 Uhr.


[BuHa Edition]

Partnerboard:
mcseboard.de