c# - 在c#json中读取子数据
问题描述
我想在我拥有的 json 数据中获取子数据,但我做不到。
我使用的代码是这样的
JSON
{
"ok": true,
"result": [
{
"update_id": XXXXX,
"message": {
"message_id": XXXXX,
"from": {
"id": XXXXX,
"is_bot": false,
"first_name": "XXXXX",
"last_name": "XXXXX",
"username": "XXXXX",
"language_code": "tr"
},
"chat": {
"id": XXXXX,
"first_name": "XXXXX",
"last_name": "XXXXX",
"username": "XXXXX",
"type": "XXXXX"
},
"date": XXXXX,
"text": "XXXXX"
}
},
{
"update_id": XXXXX,
}
}
]
}
我的代码
string link = "xxxxx";
var request = WebRequest.Create(link);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream data = response.GetResponseStream();
StreamReader reader = new StreamReader(data);
string rs = reader.ReadToEnd();
dynamic json = JsonConvert.DeserializeObject(rs);
foreach (var item in json)
{
MessageBox.Show(item.result.message.chat.id);
}
我的代码想像这样打印子数据,如果您能提供帮助,我会很高兴。从现在开始谢谢你
解决方案
所以基本上你的问题很简单。您的json
变量不是数组,而是包含ok
and的对象result
。如果我理解你试图做的事情,你的foreach
判刑应该是这样的:foreach (var item in json.result)
和整个代码:
string link = "xxxxx";
var request = WebRequest.Create(link);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream data = response.GetResponseStream();
StreamReader reader = new StreamReader(data);
string rs = reader.ReadToEnd();
dynamic json = JsonConvert.DeserializeObject(rs);
foreach (var item in json.result)
{
MessageBox.Show(item.result.message.chat.id);
}
另外我建议您使用特定类型而不是dynamic
. 在这种情况下,强类型可以帮助您在问题之前发现问题。为了加倍努力,我建议您使用HttpClient
而不是WebRequest
. 更多信息:https ://stackoverflow.com/a/53157401/9096935
推荐阅读
- angular - 当 rxjs throwError 重新抛出 http 错误响应时,自定义全局错误处理程序未命中
- r - 自动将逻辑向量转换为整数的问题
- angular - 当条件发生变化时重新运行管道以进行观察(Angular 7)
- matrix - 如何在 RenderScript 中将 GLSL mat2 类型转换为等效类型并使用
- c - fwrite 不断将不需要的文本写入我的文件
- webrtc - 使用 Agora SDK for android 时到扬声器的音频路由
- php - 多个表单提交 - Laravel
- c# - 如何反序列化具有依赖属性的 JSON?
- python - 需要在数组python3的多维列表中抓取整个第一个元素(数组)
- python - 从 google-colab 将 pyspark 与 mongodb 连接起来