C# 解析“JSON“格式数据和网络实战案例 入门

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: C# 解析“JSON“格式数据和网络实战案例 入门

实战:

前言:

解析JSON格式的数据对于爬虫来说非常重要,网页中大部分的接口基本返回的都是这个格式,如果只是想要小部分的数据可以使用字符串的分割,但是一般爬取内容基本不会小部分…如果一直使用字符串分割非常的消耗时间和内存

什么是JSON格式?

先看看长什么样子

这是一个对象格式的数据

{
  "name": "生产队的驴",
  "age": "17",
  "state": "在线",
  "id": "dpc5201314",
  "phone": "18888888888", 
}

这就是一个简单的JSON格式的数据,当然爬虫一般数据没那么点…

JSON分为两种格式 一种是对象(Objtect),另一种是数组(Array) 不同的格式解析的方法不一样 但大同小异

分辨格式:

分辨格式特别简单

这是看他前面的符号 { } 是对象 ,[ ] 是数组

对象格式:

数组格式:

{
    "employees": [
        {
            "firstName": "Bill",
            "lastName": "Gates"
        },
        {
            "firstName": "George",
            "lastName": "Bush"
        },
        {
            "firstName": "Thomas",
            "lastName": "Carter"
        }
    ]
}

{ 这是对象 }

[ 这是数组 ]

数组是可以通过下标访问的

JSON结构:

可以看到他是一个 数型 结构

访问里面的元素结需要 先拿下 树根(employees)然后这得到 树叶(firstName)

上面说到 数组是可以通过下标访问对应的内容


C#解析

简单的介绍了一下他的格式 接下来就是这么使用C#解析他了

需要使用到 Newtonsoft.Json 类库

安装即可

命名空间:

using Newtonsoft.Json.Linq;

记得导入命名空间

对象 和 数组所以的函数不一样

对象:JObject
数组:JArray

JS整理工具:

正常爬虫 返回的数据非常的乱 所以需要搭配JS工具来整理

无从下手

整理后一目了然

在线JS解析工具


对象解析:

首先需要有JSON数据,这里方便演示直接从本地导入…当然正常爬虫是从服务器上获取的…只是为了演示

StreamReader read = new StreamReader(@"C:\Users\Acer\Desktop\1.txt", Encoding.UTF8);
  //读取文本
string str =read.ReadToEnd();

文本内容

{ } 是对象 使用对象的函数解析,

JObject arr = JObject.Parse(str);
 Console.WriteLine("名字:"+arr["name"]);
  Console.WriteLine("年龄:" + arr["age"]);
  Console.WriteLine("状态:" + arr["state"]);
 Console.WriteLine("账号:" + arr["id"]);
 Console.WriteLine("手机号:" + arr["phone"]);

通过对象 获取他的节点 arr[“age”]

因为不是实战…没难度

数组解析:

这个其实还是一个 对象 里面包含了一个数组 所以需要强制转换

读取JSON:

StreamReader read = new StreamReader(@"C:\Users\Acer\Desktop\2.txt", Encoding.UTF8);    
        string str =read.ReadToEnd();

强制转格式:

JObject j = JObject.Parse(str);
JArray r = (JArray)j["employees"];
//强制转成数组 因为要获取employees

转换成功后就可以 使用下标去获取 需要的数据了

显示数据:

Console.WriteLine(r[1]["firstName"]);

第一个[ ]为下标 第二个为 获取哪个节点

如果需要显示全部数据那就可以 使用循环访问下标 获取

for (int i = 0; i < r.Count; i++)
            {
                Console.WriteLine(r[i]["firstName"]);
            }

其他节点也是一样的

for (int i = 0; i < r.Count; i++)
            {
                Console.WriteLine(r[i]["firstName"]);
                Console.WriteLine(r[i]["lastName"]+"\n");
            }


说那么多 直接加入实战…

某评论区:

数据太乱 去整理

在线JS解析工具

因为JSON是可以嵌套的 当每次想访问哪个节点时 就必须先获取上一个节点

所有的数据都包含 data (树根)上 里还嵌套着 visionCommentList 和 rootComments 其中rootComments 就是他的评论数据 他是一个数组

authorName:用户名

content:评论内容

headurl:用户头像

这是一个对象 先用对象的方式获取他

JObject j = JObject.Parse(str);

获取嵌套的节点:

string js = j["data"]["visionCommentList"]["rootComments"].ToString();
  JArray r = JArray.Parse(js);
  //剩下的就是 数组 然后使用数组的方式解析

循环下标 显示评论

for (int i = 0; i < r.Count; i++)
            {
 Console.WriteLine("\n"+r[i]["authorName"]+": "+r[i]["content"]);
            }

总结:

好像都没什么难度,在真正做爬虫的时候 找接口 和 传递的参数才是难点…

纯手打,点个赞呗~

相关文章
|
1月前
|
JSON 前端开发 搜索推荐
关于商品详情 API 接口 JSON 格式返回数据解析的示例
本文介绍商品详情API接口返回的JSON数据解析。最外层为`product`对象,包含商品基本信息(如id、name、price)、分类信息(category)、图片(images)、属性(attributes)、用户评价(reviews)、库存(stock)和卖家信息(seller)。每个字段详细描述了商品的不同方面,帮助开发者准确提取和展示数据。具体结构和字段含义需结合实际业务需求和API文档理解。
|
28天前
|
JSON 小程序 UED
微信小程序 app.json 配置文件解析与应用
本文介绍了微信小程序中 `app.json` 配置文件的详细
132 12
|
28天前
|
JSON 缓存 API
解析电商商品详情API接口系列,json数据示例参考
电商商品详情API接口是电商平台的重要组成部分,提供了商品的详细信息,支持用户进行商品浏览和购买决策。通过合理的API设计和优化,可以提升系统性能和用户体验。希望本文的解析和示例能够为开发者提供参考,帮助构建高效、可靠的电商系统。
39 12
|
28天前
|
前端开发 小程序 Java
uniapp-网络数据请求全教程
这篇文档介绍了如何在uni-app项目中使用第三方包发起网络请求
42 3
|
2月前
|
JSON JavaScript 前端开发
一次采集JSON解析错误的修复
两段采集来的JSON格式数据存在格式问题,直接使用PHP的`json_decode`会报错。解决思路包括:1) 手动格式化并逐行排查错误;2) 使用PHP-V8JS扩展在JavaScript环境中解析。具体方案一是通过正则表达式和字符串替换修复格式,方案二是利用V8Js引擎执行JS代码并返回JSON字符串,最终实现正确解析。 简介: 两段采集的JSON数据因掺杂JavaScript代码导致PHP解析失败。解决方案包括手动格式化修复和使用PHP-V8JS扩展在JavaScript环境中解析,确保JSON数据能被正确处理。
|
2月前
|
存储 缓存 监控
Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
本文介绍了Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
232 7
|
3月前
|
安全 算法 网络安全
量子计算与网络安全:保护数据的新方法
量子计算的崛起为网络安全带来了新的挑战和机遇。本文介绍了量子计算的基本原理,重点探讨了量子加密技术,如量子密钥分发(QKD)和量子签名,这些技术利用量子物理的特性,提供更高的安全性和可扩展性。未来,量子加密将在金融、政府通信等领域发挥重要作用,但仍需克服量子硬件不稳定性和算法优化等挑战。
|
3月前
|
JSON API 数据安全/隐私保护
拍立淘按图搜索API接口返回数据的JSON格式示例
拍立淘按图搜索API接口允许用户通过上传图片来搜索相似的商品,该接口返回的通常是一个JSON格式的响应,其中包含了与上传图片相似的商品信息。以下是一个基于淘宝平台的拍立淘按图搜索API接口返回数据的JSON格式示例,同时提供对其关键字段的解释
|
3月前
|
JSON 数据格式 索引
Python中序列化/反序列化JSON格式的数据
【11月更文挑战第4天】本文介绍了 Python 中使用 `json` 模块进行序列化和反序列化的操作。序列化是指将 Python 对象(如字典、列表)转换为 JSON 字符串,主要使用 `json.dumps` 方法。示例包括基本的字典和列表序列化,以及自定义类的序列化。反序列化则是将 JSON 字符串转换回 Python 对象,使用 `json.loads` 方法。文中还提供了具体的代码示例,展示了如何处理不同类型的 Python 对象。
|
3月前
|
JSON 缓存 前端开发
PHP如何高效地处理JSON数据:从编码到解码
在现代Web开发中,JSON已成为数据交换的标准格式。本文探讨了PHP如何高效处理JSON数据,包括编码和解码的过程。通过简化数据结构、使用优化选项、缓存机制及合理设置解码参数等方法,可以显著提升JSON处理的性能,确保系统快速稳定运行。

热门文章

最新文章

推荐镜像

更多