2017-03-28 3 views
0

Ich versuche, einen Angular2-Client mit einem C# ASP.net-Core-Server zu verbinden. Wenn ich einen JSON-String mit WebSockets vom Client an den Server gesendet werden, erhalte ich eine Fehlermeldung:Gültige JSON-Zeichenfolge wirft unerwartetes Zeichen gefunden Fehler

Unexpected character encountered while parsing value: {. Path 'Argument', line 1, position 39.

Der JSON-String ist wie folgt (Der Fehler aus der öffnenden Klammer nach „Argumente zu stammen scheint : "):

{ 
    "MethodName": "CreateUser", 
    "Argument": { 
    "User": { 
     "Attributes": [{ 
     "Name": "age", 
     "Value": "30", 
     "Type": 0 
     }], 
     "Email": "[email protected]", 
     "Name": "Test Name" 
    }, 
    "Password": "1234" 
    } 
} 

der Code, der den Fehler wirft, ist hier:

public string Receive(string input) 
    { 
     try 
     { 
      Debug.WriteLine(input); 
      InstructionServer jsonObject = JsonConvert.DeserializeObject<InstructionServer>(input); // This fails 
      string methodName = jsonObject.MethodName; 
      string data = jsonObject.Argument; 
      return methods[methodName](1, data, "", ""); 
     } 
     catch (Exception e) 
     { 
      return "error: " + e.Message; 
     } 

    } 

ich kann nicht scheinen, um herauszufinden, was der Fehler ist, denn wenn ich das JSON in einen Online-JSON-Formatierer werfe, meldet es es als gültiges JSON. Jede Hilfe wäre willkommen.

EDIT: Nur um auf dem gültigen JSON zu klären. Ich habe versucht, die JSON-Zeichenfolge vor dem Senden auf dem Client und nach dem Empfang auf dem Server zu drucken, und es ist die gleiche JSON-Zeichenfolge wie oben beschrieben.

+0

Ist das die wirkliche Antwort oder eine von Ihnen bearbeitet? d. h. wo spezielle Buchstaben in der JSON wie ä. ö, ü, usw.? – Tseng

+0

Haben Sie Ihre Netzwerk-Registerkarte überprüft und die Antwort angesehen? – Alex

+0

@Tseng Die JSON-Zeichenfolge oder der Fehler? Es gibt keine speziellen Buchstaben und die Zeichenfolge ist genau so, außer dass ich Zeilenumbrüche hinzugefügt habe, um es lesbarer zu machen. –

Antwort

1

Argument scheint eine string zu erwarten, aber ein Objekt gefunden. Sie müssen das Format überprüfen, das InstructionServer erwartet, und sicherstellen, dass es korrekt deserialisieren kann.

+0

Vielen Dank, das Ändern des Argumenttyps in InstructionServer zum Objekt löste das Problem! –

0

Die Erhalten Methode den String-Wert erwarten, dies bedeutet, dass Sie Ihr Objekt JSON-Format zu konvertieren, so zu sein:

"{\"MethodName\":\"CreateUser\",\"Argument\":{\"User\":{\"Attributes\":[{\"Name\":\"age\",\"Value\":\"30\",\"Type\":0}],\"Email\":\"[email protected]\",\"Name\":\"Test Name\"},\"Password\":\"1234\"}}" 
Verwandte Themen