【问题标题】:C# - Unexpected character encountered while parsing value [duplicate]C# - 解析值时遇到意外字符[重复]
【发布时间】:2020-04-02 10:24:48
【问题描述】:

这是我的代码:

private void OnIncomingData(string data)
{
    Console.WriteLine("RECEIVED: "  + data);
    TransferData transfer = JsonConvert.DeserializeObject<TransferData>(data);
}

我收到一个错误:

JsonReaderException:解析时遇到意外字符 价值: {。路径“数据”,第 1 行,位置 26。

这是我的Console.WriteLine 给出的:

收到: {"header":"0x001","data":{"connectionId":"85"},"connectionId":85}

这是我的TransferData 课程:

public class TransferData
{
    public string header;
    public string data;
    public int connectionId;
}

如您所见,json 字符串是正确的。为什么比我收到此错误?我该如何解决?

【问题讨论】:

  • json 中的 data 看起来不正确。它不是一个字符串,它是一个具有connectionId 属性的对象。

标签: c# json


【解决方案1】:

您的类型说Data 是一个字符串,但它对我来说看起来像一个对象。认为您需要类似的东西:

public class TransferData
{
    public string header;
    public Data data;
    public int connectionId;
}

public class Data
{
    public int connectionId;
}

【讨论】:

    【解决方案2】:

    您的模型与 JSON 模式不对应,因为在 JSON 中您有一个对象 data,而在模型中它是字符串。要么将对象包装在 JSON 中是字符串,要么将 data 类型更改为描述您可以接收的内容的类型,或者更改为 JObject

    【讨论】:

    • 如何用字符串包裹它?你的意思是。可以举个例子吗?
    • "data":{"connectionId":"85"} 更改为"data": "{\"connectionId\":\"85\"}"。这真的是你需要的吗?您将在模型的数据字段中以 JSON 字符串结尾
    猜你喜欢
    • 1970-01-01
    • 2014-06-09
    • 2016-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-30
    • 1970-01-01
    • 2020-05-09
    相关资源
    最近更新 更多