我试图将angular2客户端连接到C#ASP.net核心服务器。当我使用websockets从客户端向服务器发送JSON字符串时,出现错误:
Unexpected character encountered while parsing value: {. Path 'Argument', line 1, position 39.
JSON字符串如下(错误似乎来自&#34之后的左括号;参数:"):
{
"MethodName": "CreateUser",
"Argument": {
"User": {
"Attributes": [{
"Name": "age",
"Value": "30",
"Type": 0
}],
"Email": "test@mail.com",
"Name": "Test Name"
},
"Password": "1234"
}
}
抛出错误的代码在这里:
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;
}
}
我似乎无法弄清楚错误是什么,因为当我将JSON扔进在线JSON Formatter时,它会将其报告为有效的JSON。任何帮助将不胜感激。
编辑:只是为了澄清有效的JSON。我尝试在将json字符串发送到客户端之前以及在服务器上接收之后将其打印出来,并且它与上面写的json字符串相同。
答案 0 :(得分:2)
Argument
似乎期待string
,但找到了一个对象。您必须检查InstructionServer
期望的格式,并确保它能够正确反序列化。
答案 1 :(得分:0)
接收方法需要字符串值,这意味着您必须将对象转换为JSON格式,如下所示:
"{\"MethodName\":\"CreateUser\",\"Argument\":{\"User\":{\"Attributes\":[{\"Name\":\"age\",\"Value\":\"30\",\"Type\":0}],\"Email\":\"test@mail.com\",\"Name\":\"Test Name\"},\"Password\":\"1234\"}}"