Überprüfen Sie, ob die Zeichenfolge entweder XML- oder JSON-Daten enthält

8

Ich erhalte einen String, der entweder den Inhalt von xml oder json enthält.

Wenn String json-Inhalt enthält, verwende ich jackson (java api), um JSON in Java-Objekt

zu konvertieren

Und wenn es XML-Inhalte enthält, benutze ich JAXB, um XML-Inhalt in ein Java-Objekt zu konvertieren ( Unmarshalling ).

Wie kann ich prüfen, ob ich in dieser Zeichenfolge xml oder json erhalte?

    
Shahid Ghafoor 19.12.2013, 08:55
quelle

2 Antworten

13

Eine XML-Dokument-Entität (im allgemeinen Sprachgebrauch ein XML-Dokument) muss mit "& lt;" beginnen.

Ein JSON-Text beginnt gemäß ECMA-404 mit null oder mehr Leerzeichen, gefolgt von einem der folgenden Zeichen:

%Vor%

Ihr einfacher Ansatz besteht also nur darin, if(s.startsWith("<")

zu testen     
Michael Kay 19.12.2013 10:27
quelle
5

Wenn Ihnen die Kodierung dieser Zeichenfolge bekannt ist (oder ASCII oder UTF), dann sollte das erste Zeichen dieses Strings ausreichen.

Wenn der String beginnt

Für JSON müssen Sie auch Leerräume entfernen, bevor Sie das "erste" Zeichen betrachten (wenn die Zeichenfolge, die Sie erhalten, zusätzliche Leerzeichen enthalten kann).

Obwohl es für JSON-Datenstrukturen zulässig ist, mit null , true , false zu beginnen, können Sie diese Situationen vermeiden, wenn Sie bereits etwas über Ihre Datenstrukturen wissen.

Sie können also im Grunde prüfen, ob das erste Zeichen ein < ist und in diesem Fall es als XML behandeln. In anderen Fällen behandeln Sie es als JSON und lassen Sie jackson einige Ausnahmen auslösen, wenn dies keine legale JSON-Syntax ist.

    
Matthias 19.12.2013 09:09
quelle

Tags und Links