2017-01-24 5 views
1

Ich habe eine lange JSON-Zeichenfolge, die natürlich viele geschweifte Klammern enthält. Ich entkam den geschweiften Klammern mit zwei öffnenden und schließenden Klammern für jeden (wie die Empfehlung in einigen früheren Posts auf stackoverflow). Ich bekomme immer noch den Fehler:VS2015 C# string.Format löst Fehler bei der Verwendung von geschweiften geschweiften Klammern aus

System.FormatException : Input string was not in a correct format.

Hier ist ein verkürztes Beispiel:

var json = string.Format([email protected]"{{""{data.GraphId}""}}"); 

Hat sich etwas verändert, wie Format funktioniert? Was ist der richtige Weg, um geschweifte Klammern jetzt zu entkommen?

+1

Warum haben Sie keine JSON-Bibliothek verwendet? – Rabban

+5

Warum mischen Sie 'string.Format' mit interpolierten Strings (das' $ 'vor dem String)? Die ganze Idee von interpolierten Strings ist es, 'string.Format' zu ersetzen, so dass der Code weniger ausführlich ist. – juharr

+0

Kein 'string.Format' benötigt:' var json = $ "{{{data.GraphId}}}"; ', mit Anführungszeichen:' $ "\" {{data.GraphId}}} \ "" ' –

Antwort

4

Die String-Interpolation wird nur in einen Aufruf von string.Format umgewandelt. So ist die Zeichenfolge, die Sie zu string.Format passieren wird von

[email protected]"{{""{data.GraphId}""}}" 

zu so etwas wie die folgenden

string.Format(@"{{""{0}""}}", data.GraphId) 

So Ihr Code entspricht

string.Format(string.Format(@"{{""{0}""}}", data.GrpahId)); 

geändert werden, sobald der innere string.Format es gemacht wird würde aussehen wie die folgende Annahme data.GrpahId ist sagen 5

string.Format(@"{""5""}"); 

Jetzt sehen Sie, dass Ihre zuvor begrenzten geschweiften Klammern nicht mehr getrennt sind. Die Lösung besteht darin, keine interpolierten Zeichenfolgen in string.Format zu verwenden, oder wenn Sie aus irgendeinem Grund die geschweiften Klammern verdoppeln müssen.

Auf einer anderen Anmerkung, wenn Sie mit Json beschäftigen, sollten Sie nur eine Bibliothek verwenden, anstatt zu versuchen, es selbst zu formatieren.

+0

Danke, das hat mein Problem gelöst. Die Struktur ist ld + json und komplex, nicht sicher, ob die Verwendung einer Bibliothek es einfacher machen würde. Irgendwelche Empfehlungen? – JohnCambell

+0

Ich habe Json.Net verwendet. Es kann ein wenig Arbeit erfordern, um mit Ihrer komplexen Situation fertig zu werden, aber es ist wahrscheinlich weniger als das JSon selbst zu bauen. – juharr

Verwandte Themen