Newtonsoft.Json.JsonReaderException:读取完JSON内容后遇到的其他文本:



我在从服务器接收时在 JSON 数组中遇到一个奇怪的问题,我试图反序列化它,但它说

我创建了一个类并尝试将其反序列化为该对象,但是它说

下面给出了该类。

class bundle
{
    public string msgid { get; set; }
    public string messagetype { get; set; }
    public string message { get; set; }
    public string from { get; set; }
}

异常:Newtonsoft.Json.JsonReader异常:读取完 JSON 内容后遇到的其他文本:y. 路径 '',第 1 行, 位置 93。 at Newtonsoft.Json.JsonTextReader.Read() at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent) at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, 类型 对象类型) 在 Newtonsoft.Json.JsonSerializer.Deserialize(JsonReader reader, Type objectType) at Newtonsoft.Json.JsonConvert.DeserializeObject(String 值、类型类型、Json序列化程序设置设置)在 Newtonsoft.Json.JsonConvert.DeserializeObject(String value) at Listener.Program.LogStatus(Boolean receptiving, Byte[] buffer, Int32 长度)在 Listener.Program.d__5.MoveNext() 在 --- 结束 从引发异常的先前位置的堆栈跟踪---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task 任务)在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult()
at Listener.Program.d__1.MoveNext()

我得到的数组在下面,

{"messagetype":"chatmsg","msgid":"123_119","from":"sam","message":"Hi there, good morning ! "}                                                                                                                            
{"messagetype":"chatmsg","msgid":"123_120","from":"sam","message":"how are you?"}                                                                                                                            
{"messagetype":"chatmsg","msgid":"6478316959_121","from":"sam","message":"this is msg"} ood morning !"}                                                                                                                            
{"messagetype":"ping"}g","msgid":"6478316959_121","from":"sam","message":"you are crazy"} orning ! "}

这是最后意想不到的令牌。

经过大量的工作,我想出了这个:

string final = string.Empty;
string name = encoder.GetString(buffer);
char []arr = name.ToArray();
boolean bln = true;
foreach (char item in arr)
{
    if (bln)
    {
        if (item == '}')
        {
            final += item.ToString();
            break;
        }
        else
        {
            final += item.ToString();
        }
    }
}
Console.WriteLine(final);

这将截断其余字符。

所有数组项键都必须以相同的名称放置在您的 finally 类中,将您的类更改为 this 并再次测试它:

class bundle
{
    public string msgid { get; set; }
    public string messagetype { get; set; }
    public string message { get; set; }
    public string from { get; set; }
}

elso 你可以通过这样的工具转换你的 JSON 数组:JSON2Csharp

我认为您的 Json 无效,并且因为您有多个根元素,因此需要反序列化以List<bundle> .

{"messagetype":"chatmsg","msgid":"123_119","from":"sam","message":"Hi there, good morning ! "}                                                                                                                            
{"messagetype":"chatmsg","msgid":"123_120","from":"sam","message":"how are you?"}                                                                                                                            
{"messagetype":"chatmsg","msgid":"6478316959_121","from":"sam","message":"this is msg. Good morning !"}                                                                                                                            
{"messagetype":"ping","msgid":"6478316959_121","from":"sam","message":"you are crazy morning ! "}

我正在使用Newtonsoft;在我的示例中,序列化在我用这些{ }包围整个JSON之后起作用

希望这对某人有所帮助。

相关内容

  • 没有找到相关文章

最新更新