【发布时间】:2019-05-19 08:58:11
【问题描述】:
我想分析 Telegram-Chats,所以我以 JSON 格式导出了一个聊天,并想将其反序列化到我的分析软件中。
{
"id": 397910,
"type": "message",
"date": "2018-02-21T10:27:59",
"edited": "1970-01-01T01:00:00",
"from": "Username",
"from_id": 39033284,
"text": "Some Text"
}
所以我使用这个简单的代码来读取 JSON
List<JSONObject> jsonObjects = JsonConvert.DeserializeObject<List<JSONObject>>(File.ReadAllText(openFileDialog.FileName));
public class JSONObject
{
public int ID;
public string type;
public string date;
public string edited;
public string from;
public int fromID;
public string photo;
public int width;
public int height;
public string text;
}
这对于前 525 个数据集来说非常顺利,但之后,由于“一致性问题”,我在反序列化数据时遇到了麻烦。文本的 Datatype 有时会变为数组。
{
"id": 397911,
"type": "message",
"date": "2018-02-21T10:31:47",
"edited": "1970-01-01T01:00:00",
"from": "Username",
"from_id": 272964614,
"text": [
"Some Text ",
{
"type": "mention",
"text": "@school"
},
" Some Text"
]
}
另外,我找到了这个数据集
{
"id": 397904,
"type": "message",
"date": "2018-02-21T10:18:12",
"edited": "1970-01-01T01:00:00",
"from": "Username",
"from_id": 39033284,
"text": [
{
"type": "link",
"text": "google.com"
},
"\n\nSome Text"
]
}
当数据显示这种不一致时,我不知道如何反序列化数据。
【问题讨论】:
-
你有一个奇怪的 Json 要求,它不仅是一个数组,而且数组也包含不同的对象集,虽然这个问题的答案是非常定制的,但这里有一个通用的解决方案,它做了一个适合各种类型,Check Here
标签: c# json json.net deserialization telegram