【问题标题】:Valid JSON string throws Unexpected character encountered error有效的 JSON 字符串抛出意外字符遇到错误
【发布时间】:2017-03-28 13:28:10
【问题描述】:

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

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

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

{
  "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 格式化程序时,它会将其报告为有效 JSON。任何帮助将不胜感激。

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

【问题讨论】:

  • 这是真实的回复还是您编辑的?即 json 中有特殊字母的地方,比如 ä。 ö、ü、é 等?
  • 您是否检查了您的网络标签并查看了响应?
  • @Tseng JSON 字符串还是错误?没有特殊字母,字符串完全一样,只是我添加了换行符以使其更具可读性..
  • @AJT_82 我没有检查我的网络选项卡,但我在服务器端做了一个 Debug.WriteLine 以及在客户端做了一个 console.log。

标签: c# json angular websocket asp.net-core


【解决方案1】:

Argument 似乎在等待 string,但找到了一个对象。您必须检查 InstructionServer 所期望的格式,并确保它能够正确反序列化。

【讨论】:

  • 谢谢,将 InstructionServer 中的 Argument 类型更改为 object 解决了问题!
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2017-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-14
    • 2014-01-13
    相关资源
    最近更新 更多