Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 有效的JSON字符串抛出意外字符遇到错误_C#_Json_Angular_Websocket_Asp.net Core - Fatal编程技术网

C# 有效的JSON字符串抛出意外字符遇到错误

C# 有效的JSON字符串抛出意外字符遇到错误,c#,json,angular,websocket,asp.net-core,C#,Json,Angular,Websocket,Asp.net Core,我正在尝试将angular2客户端连接到C#ASP.net核心服务器。当我使用WebSocket将JSON字符串从客户端发送到服务器时,我得到一个错误: 分析值时遇到意外字符:{.Path'Argument',第1行,第39位。 JSON字符串如下所示(错误似乎源于“Argument:”后面的左括号): 引发错误的代码如下所示: public string Receive(string input) { try { Debug.Wr

我正在尝试将angular2客户端连接到C#ASP.net核心服务器。当我使用WebSocket将JSON字符串从客户端发送到服务器时,我得到一个错误:

分析值时遇到意外字符:{.Path'Argument',第1行,第39位。

JSON字符串如下所示(错误似乎源于“Argument:”后面的左括号):

引发错误的代码如下所示:

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;
        }

    }
公共字符串接收(字符串输入)
{
尝试
{
Debug.WriteLine(输入);
指令服务器jsonObject=JsonConvert.DeserializeObject(输入);//此操作失败
string methodName=jsonObject.methodName;
字符串数据=jsonObject.Argument;
返回方法[methodName](1,数据,“,”);
}
捕获(例外e)
{
返回“错误:”+e.消息;
}
}
我似乎不知道错误是什么,因为当我将JSON放入在线JSON格式化程序时,它会将其报告为有效的JSON。任何帮助都将不胜感激


编辑:只是为了澄清有效的JSON。我在将JSON字符串发送到客户端之前以及在服务器上接收到它之后,尝试将其打印出来,它与上面所写的JSON字符串相同。

参数
似乎需要一个
字符串,但找到了一个对象。您必须检查
指令的格式N服务器
需要并确保它能够正确反序列化。

接收方法需要字符串值,这意味着您必须将对象转换为JSON格式,如下所示:

"{\"MethodName\":\"CreateUser\",\"Argument\":{\"User\":{\"Attributes\":[{\"Name\":\"age\",\"Value\":\"30\",\"Type\":0}],\"Email\":\"test@mail.com\",\"Name\":\"Test Name\"},\"Password\":\"1234\"}}"

这是真实的响应还是您编辑的响应?例如,json中有特殊的字母,如ä.ö、ü、é等?您是否检查了网络选项卡并查看了响应?@Tseng json字符串或错误?没有特殊的字母,字符串与此完全相同,只是我添加了换行符以使其更具可读性。@AJT82我没有检查我的网络选项卡,但我在服务器端执行了Debug.WriteLine,在客户端执行了console.log。谢谢,将InstructionServer中的参数类型更改为object解决了问题!
"{\"MethodName\":\"CreateUser\",\"Argument\":{\"User\":{\"Attributes\":[{\"Name\":\"age\",\"Value\":\"30\",\"Type\":0}],\"Email\":\"test@mail.com\",\"Name\":\"Test Name\"},\"Password\":\"1234\"}}"