JSON.NET und Ersetzen von @ XML in JSON-Konvertierung anmelden

7

Das JSON.NET-Framework kann XML in JSON konvertieren, verwendet jedoch das @ -Zeichen in JSON als Attribut. Ich würde das lieber entfernen, bevor ich es zur Ansicht sende. Was wäre der beste Ansatz dafür?

Ich weiß, dass ich einen direkten Ersatz machen kann, aber ein @ -Zeichen kann irgendwo relevant sein und sollte nicht ersetzt werden. Gibt es dafür einen Regex?

%Vor% %Vor%     
Mike Flynn 02.09.2011, 02:05
quelle

9 Antworten

9

Ich ging voran und benutzte das. Lassen Sie mich wissen, ob es einen besseren Weg gibt.

%Vor%     
Mike Flynn 02.09.2011, 02:45
quelle
8

Ich brauchte eine Weile, um die richtige Antwort zu finden, also dachte ich, ich würde teilen:

%Vor%

Ausgabe:

%Vor%     
Ilya 19.04.2017 03:20
quelle
1

Der Regex funktioniert nicht immer gut, wenn Inhalt den @ -Zeichen hat und an erster Stelle ersetzt wird. also denke ich (?<!:)(\"@)(?!.\":\s ) könnte besser sein.

    
yieio 14.08.2012 01:23
quelle
1

Eine andere Möglichkeit ist, Ihre eigene OneWayXmlNodeConverter von JsonConverter zu erben und SerializeObject anstelle von SerializeXmlNode wie folgt aufzurufen:

%Vor%

Ich nenne es "One Way", weil ich annahm, dass der Standardwert XmlNodeConverter das Zeichen "@" hinzufügt, damit es vom resultierenden JSON zurück in XML konvertiert werden kann.

Wenn Sie die Quelle JSON.NET in Ihr Projekt einbinden (im Gegensatz zu nur der kompilierten Bibliothek), können Sie OneWayXmlNodeConverter einfach erstellen, indem Sie den XmlNodeConverter -Code kopieren und das fest codierte "@" entfernen. Melden Sie die private Methode GetPropertyName an und speichern Sie sie als OneWayXmlNodeConverter .

Hinweis: Ich weiß, dass Ihre Frage spezifisch für das "Ersetzen" des "@" - Zeichens ist, aber das verknüpfte Verhindern Variation dieser Frage wird als doppelt markiert.

    
dalenewman 14.11.2014 16:29
quelle
1

Es ist eine Weile her seit dieser Antwort, aber das kann noch jemandem helfen. Da Sie das XMLDocument bereits besitzen, können Sie die Attribute entfernen und konvertieren, bevor Sie sie serialisieren. Ich habe versucht, entweder die Attribute zu entfernen oder sie in Elemente umzuwandeln.

%Vor%

Und dann;

%Vor%     
omufeed 04.09.2015 14:25
quelle
0

Ich schlage vor, die folgende Regex zu verwenden, die gleiche wie @yieio, aber zu verbessern, um den Inhalt unverändert zu lassen und nur die Eigenschaftsnamen zu beeinflussen

%Vor%     
Pola Edward 07.07.2015 10:40
quelle
0

Wenn der JSON eingerückt ist, könnte dies funktionieren:

%Vor%     
John K 03.02.2017 22:09
quelle
0

Wenn Sie auf den Wert eines Attributs aufgrund des '@' - Zeichens zugreifen möchten, gehen Sie folgendermaßen vor:

%Vor%     
code5 16.07.2015 18:06
quelle
-1
___ answer7278787 ___

Ich ging voran und benutzte das. Lassen Sie mich wissen, ob es einen besseren Weg gibt.

%Vor%     
___ qstnhdr ___ JSON.NET und Ersetzen von @ XML in JSON-Konvertierung anmelden ___ answer11944541 ___

Der Regex funktioniert nicht immer gut, wenn Inhalt den @ -Zeichen hat und an erster Stelle ersetzt wird. also denke ich %code% könnte besser sein.

    
___ qstntxt ___

Das JSON.NET-Framework kann XML in JSON konvertieren, verwendet jedoch das @ -Zeichen in JSON als Attribut. Ich würde das lieber entfernen, bevor ich es zur Ansicht sende. Was wäre der beste Ansatz dafür?

Ich weiß, dass ich einen direkten Ersatz machen kann, aber ein @ -Zeichen kann irgendwo relevant sein und sollte nicht ersetzt werden. Gibt es dafür einen Regex?

%Vor% %Vor%     
___ answer26934583 ___

Eine andere Möglichkeit ist, Ihre eigene %code% von %code% zu erben und %code% anstelle von %code% wie folgt aufzurufen:

%Vor%

Ich nenne es "One Way", weil ich annahm, dass der Standardwert %code% das Zeichen "@" hinzufügt, damit es vom resultierenden JSON zurück in XML konvertiert werden kann.

Wenn Sie die Quelle %code% in Ihr Projekt einbinden (im Gegensatz zu nur der kompilierten Bibliothek), können Sie %code% einfach erstellen, indem Sie den %code% -Code kopieren und das fest codierte "@" entfernen. Melden Sie die private Methode %code% an und speichern Sie sie als %code% .

Hinweis: Ich weiß, dass Ihre Frage spezifisch für das "Ersetzen" des "@" - Zeichens ist, aber das verknüpfte Verhindern Variation dieser Frage wird als doppelt markiert.

    
___ answer32400467 ___

Es ist eine Weile her seit dieser Antwort, aber das kann noch jemandem helfen. Da Sie das XMLDocument bereits besitzen, können Sie die Attribute entfernen und konvertieren, bevor Sie sie serialisieren. Ich habe versucht, entweder die Attribute zu entfernen oder sie in Elemente umzuwandeln.

%Vor%

Und dann;

%Vor%     
___ answer42033796 ___

Wenn der JSON eingerückt ist, könnte dies funktionieren:

%Vor%     
___ answer31266295 ___

Ich schlage vor, die folgende Regex zu verwenden, die gleiche wie @yieio, aber zu verbessern, um den Inhalt unverändert zu lassen und nur die Eigenschaftsnamen zu beeinflussen

%Vor%     
___ answer43485727 ___

Ich brauchte eine Weile, um die richtige Antwort zu finden, also dachte ich, ich würde teilen:

%Vor%

Ausgabe:

%Vor%     
___ answer31461488 ___

Wenn Sie auf den Wert eines Attributs aufgrund des '@' - Zeichens zugreifen möchten, gehen Sie folgendermaßen vor:

%Vor%     
___ tag123xml ___ Die XML-Datei (Extensible Markup Language) ist ein flexibles, strukturiertes Dokumentformat, das Codierungsregeln für Menschen und Maschinen definiert. ___ tag123json ___ JSON (JavaScript Object Notation) ist ein Textdatenaustauschformat und sprachunabhängig. Verwenden Sie dieses Tag, wenn dieses Textformat beteiligt ist. VERWENDEN SIE DIESEN TAG NICHT FÜR NATIVE JAVASCRIPT-OBJEKTE ODER JAVASCRIPT OBJECT LITERALS. Bevor Sie eine Frage stellen, wenn Sie glauben, dass Ihre JSON-Datei gültig ist, überprüfen Sie sie bitte in einem JSON-Validator wie JSONLint, damit Ihre Frage beantwortet wird, bevor Sie sie stellen. ___ antwort43996587 ___

Ersetzen Sie zuerst alle "@" in Ihrem XML-Inhalt durch einen Platzhalter (als Beispiel {{at_the_rate}}). Dann benutze den untenstehenden Code

%Vor%     
___ tag123jsonnet ___ Json.NET (auch bekannt als Newtonsoft.Json) ist ein populäres JSON-Framework für .NET. ___
Bhargav 16.05.2017 08:48
quelle

Tags und Links