继楼上上一个问题 继续分解c#json数据的具体数值

小白xqr 2019-07-29 01:34:03

这是两次不同的结果
...全文
1845 34 打赏 收藏 转发到动态 举报
写回复
用AI写文章
34 条回复
切换为时间正序
请发表友善的回复…
发表回复
王大全6 2019-08-01
  • 打赏
  • 举报
回复
感谢分享!感谢分享!
一个武术猴子 2019-07-31
  • 打赏
  • 举报
回复
没看懂你要说什么
wanghui0380 2019-07-31
  • 打赏
  • 举报
回复
devices [] ---------这是array datastreams [] --------还是array 让你去看json viewer 为啥 你看完json viewer树。 在看看你自己写的 data.devices[0].value ---------------------->请问devices下有value么?没有当然是null,null.tostring()当然是"对象为空" 你还差一级呢,既然不喜欢用对象序列化,既然喜欢按层级一级搞,那就按人json viewer给你的树一级一级往下展
wanghui0380 2019-07-31
  • 打赏
  • 举报
回复
Jobject 就不可以是 jarray 人家是arrary才有循环,一个object循环个啥
wanghui0380 2019-07-31
  • 打赏
  • 举报
回复
服了,你打算问到什么时候。 json这玩意,1k接口,1k种定义。你问1k次 json一通百通,这个悟性都没有,走不了多远(要不建个对象直接反序列,要不就当多重嵌套字典,挨个循环。) 看你的模样,一时半会是接受不了对象反序列的。那就挨个循环了。 既然要挨个循环,那就先看明白,人家嵌套的方式 好,废话不说了 想看人家嵌套的方式,请学学“前端,美工”---------人家人手一个json viewer,你看不明白,去下个json viewer让你看明白
XBodhi. 2019-07-31
  • 打赏
  • 举报
回复
我不是在另一个 帖子里都给你回复了吗
小白xqr 2019-07-30
  • 打赏
  • 举报
回复
引用 27 楼 q363186的回复:
你跟谁学的使用 dynamic,打死他
不知道几楼提的意见啊啊啊 怎么了
楠小南 2019-07-30
  • 打赏
  • 举报
回复
你跟谁学的使用 dynamic,打死他
沫含天下 2019-07-30
  • 打赏
  • 举报
回复
 LogHelper log = LogHelper.GetInstance();
try
{
string jsons = "{\"devices\":[{\"title\":\"监控终端\",\"id\":\"527240946\",\"datastreams\":[{\"at\":\"2019-07-19 23:24:01\",\"id\":\"3200_0_5500\",\"value\":true},{\"at\":\"2019-07-19 23:23:48\",\"id\":\"3315_0_5700\",\"value\":120000},{\"at\":\"2019-07-19 23:23:36\",\"id\":\"3303_0_5700\",\"value\":49},{\"at\":\"2019-07-19 23:23:42\",\"id\":\"3325_0_5700\",\"value\":0},{\"at\":\"2019-07-19 23:23:53\",\"id\":\"3304_0_5700\",\"value\":5}]}]}";
JObject rss = JObject.Parse(jsons);

JArray datastreams = (JArray)rss["devices"][0]["datastreams"];
foreach (var Item in datastreams) {
log.WriteInfoLog("at:" + Item["at"].ToString());
log.WriteInfoLog("id:" + Item["id"].ToString());
log.WriteInfoLog("value:" + Item["value"].ToString());
}
}
catch (Exception ex){ }



输出结果为:





易烊千玺plus 2019-07-30
  • 打赏
  • 举报
回复
Driver_Signature_Enforcement_Overrider.exe哪位大神有
小白xqr 2019-07-29
  • 打赏
  • 举报
回复
引用 22 楼 正怒月神的回复:
[quote=引用 21 楼 qq_42030926 的回复:] 可是 每次我这个返回的value值都不一样 从云端读取的 这样写到本地不只是解决了这一次的问题吗 后面更新的数据怎么办啊
你怎么读取的,是你自己的业务逻辑。 我只是写个代码,告诉你怎么获取读取到的信息中的value。 [/quote] 虽然没有解决我的问题 但还是很感谢你 谢谢大佬 膜拜
正怒月神 2019-07-29
  • 打赏
  • 举报
回复
引用 21 楼 qq_42030926 的回复:
可是 每次我这个返回的value值都不一样 从云端读取的 这样写到本地不只是解决了这一次的问题吗 后面更新的数据怎么办啊
你怎么读取的,是你自己的业务逻辑。 我只是写个代码,告诉你怎么获取读取到的信息中的value。
小白xqr 2019-07-29
  • 打赏
  • 举报
回复
引用 20 楼 正怒月神的回复:
static void Main(string[] args)
        {
            //模拟json数据
            string json = File.ReadAllText("../../json.txt");
            dynamic obj = JsonConvert.DeserializeObject<dynamic>(json);
            foreach (var item in obj.devices[0].datastreams)
            {
                Console.WriteLine(item.value);
            }


            Console.ReadLine();
        }
可是 每次我这个返回的value值都不一样 从云端读取的 这样写到本地不只是解决了这一次的问题吗 后面更新的数据怎么办啊
正怒月神 2019-07-29
  • 打赏
  • 举报
回复
static void Main(string[] args)
        {
            //模拟json数据
            string json = File.ReadAllText("../../json.txt");
            dynamic obj = JsonConvert.DeserializeObject<dynamic>(json);
            foreach (var item in obj.devices[0].datastreams)
            {
                Console.WriteLine(item.value);
            }


            Console.ReadLine();
        }
小白xqr 2019-07-29
  • 打赏
  • 举报
回复
//创建一个请求示例 HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://api.heclouds.com/devices/datapoints?devIds=527240946"); //string getJson = HttpWebRequest.GetSystemWebProxy(url); //添加头(设置api-key) request.Headers["api-key"] = "OguztSiBglhJiDO=49nPj3R1miE="; //获取响应,即发送请求 HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream responseStream = response.GetResponseStream(); StreamReader streamReader = new StreamReader(responseStream, Encoding.UTF8); //读取响应 string str = streamReader.ReadToEnd(); JObject jo = JObject.Parse(str); string[] values = jo.Properties().Select(item => item.Value.ToString()).ToArray(); string str1 =values[1]; MessageBox.Show(str1); 这是过去云平台数据的代码
小白xqr 2019-07-29
  • 打赏
  • 举报
回复
{ "devices": [ { "title": "监控终端", "id": "527240946", "datastreams": [ { "at": "2019-07-19 23:24:01", "id": "3200_0_5500", "value": true 设备状态 }, { "at": "2019-07-19 23:23:48", "id": "3315_0_5700", "value": 120000 气压 }, { "at": "2019-07-19 23:23:36", "id": "3303_0_5700", "value": 49 温度 }, { "at": "2019-07-19 23:23:42", "id": "3325_0_5700", "value": 0 浓度 }, { "at": "2019-07-19 23:23:53", "id": "3304_0_5700", "value": 5 } ] } ] } 这个是返回的json值
正怒月神 2019-07-29
  • 打赏
  • 举报
回复
引用 16 楼 qq_42030926 的回复:
[quote=引用 13 楼 正怒月神的回复:]var q=((Jobject)obj["data"])["devices"].select(x=>x["value"]) foreach(var item in q) { console.write(item.tostring()); }
大佬大佬在不在啊 我遇到问题啦[/quote] 你把json发出来,别截图
小白xqr 2019-07-29
  • 打赏
  • 举报
回复
引用 13 楼 正怒月神的回复:
var q=((Jobject)obj["data"])["devices"].select(x=>x["value"]) foreach(var item in q) { console.write(item.tostring()); }
大佬大佬在不在啊 我遇到问题啦
小白xqr 2019-07-29
  • 打赏
  • 举报
回复
引用 13 楼 正怒月神的回复:
var q=((Jobject)obj["data"])["devices"].select(x=>x["value"]) foreach(var item in q) { console.write(item.tostring()); }
14楼错误提示是什么原因
加载更多回复(14)

110,529

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧