2016-04-13 15 views
1

ich Code wie unten haben (es nur JSON bearbeiten und neue Sachen anstelle von JSONPath darauf gesetzt):Parsing JSON-String ohne Anführungszeichen

JToken jp = JToken.Parse(json); 
IEnumerable<JToken> nd = jp.SelectTokens(path); 

JToken newj = JToken.Parse(newval); 

foreach (JToken vl in nd) 
    ((JToken)value).Replace(newj); 

json, Weg, newval sind Saiten. Ich habe kein Problem, wenn ich versuche, neue int, float, date, bool, null usw. hinzuzufügen ... Problem ist, wenn ich versuche, eine Zeichenfolge hinzuzufügen. Format mit Zitaten korrekt ist („newstring“), aber ich brauche auch String ohne Anführungszeichen zu verwenden, aber ich habe eine Ausnahme bekommt ("Unerwartetes Ende, wenn JSON zu lesen. Pfad‚‘[...]).

gibt es eine Option Zeichenfolge ohne Anführungszeichen zu analysieren?

+0

Wie können wir helfen, wenn Sie die JSON-Zeichenfolge nicht veröffentlichen? Außerdem - warum erwarten Sie, eine * Zeichenkette * zu analysieren, wenn der Wert * nicht * eine Zeichenkette ist, dh sie ist nicht in Anführungszeichen eingeschlossen? –

+0

Es könnte jeder gültige JSON sein. Ich erhalte Wert, um Benutzer von Formularen zu bearbeiten. Wenn der Benutzer also Zitate vergessen hat (wenn er eine Zeichenfolge hinzufügen möchte), weiß ich nicht, ob es eine Möglichkeit gibt, Anführungszeichen im Code hinzuzufügen. –

+0

JSON verwendet Anführungszeichen zum Abgrenzen von Zeichenfolgen. Wenn die Eingabe keine Anführungszeichen enthält, ist dies kein gültiger JSON. Sie können nicht * raten *, wie Sie entweder wiederherstellen - Zeilenumbrüche sind in einer Zeichenfolge gültig, so dass der Rest der Datei als eine einzelne Zeichenfolge betrachtet werden kann. Außerdem, warum sollte ein * Benutzer * den Text direkt eingeben? Sollte es keinen * Validierungsschritt geben, der sie daran hindert, ungültige JSONs zu erstellen? –

Antwort

1

eine Zeichenfolge in JSON ist defined als

ein String ist eine Folge von Unicode-Codepunkten eingewickelt mit Anführungszeichen (U + 0022).

Wenn Ihre Eingabe nicht numerische Zeichen enthält Zeichen, die nicht von Anführungszeichen umgeben sind, haben Sie eine ungültige JSON-Zeichenfolge.

BTW, ist JSON nicht Daten entweder definieren. Das ISO 8601-Format wird per Konvention verwendet.

+0

Wie Sie im Kommentar geschrieben haben - jetzt bin ich validiert Textbox mit Eingabe und lassen Sie nicht Benutzer Werte ohne Anführungszeichen schreiben. –

+0

Warum umhüllst du Strings nicht selbst? – Toxantron

+0

@Toxantron weil es unmöglich ist, Code zu erraten. JSON-Strings können Zeilenumbrüche haben, was bedeutet, dass alles bis zum Ende der Datei eine gültige Zeichenfolge sein kann. t sogar davon ausgehen, dass eine Zeichenfolge keine Zeilen kreuzt, da der Text von Endbenutzern eingegeben wird. –

Verwandte Themen