我在从服务器接收时在 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之后起作用
希望这对某人有所帮助。