combate real:
Prefacio:
El análisis de datos en formato JSON es muy importante para los rastreadores. La mayoría de las interfaces en la página web básicamente devuelven este formato. Si solo desea una pequeña parte de los datos, puede usar la segmentación de cadenas, pero generalmente el contenido rastreado no será pequeño. .Parte... Si siempre usa la segmentación de cadenas, consume mucho tiempo y memoria
¿Qué es el formato JSON?
Veamos qué aspecto tiene
Estos son datos en formato de objeto.
{
"name": "生产队的驴",
"age": "17",
"state": "在线",
"id": "dpc5201314",
"phone": "18888888888",
}
Estos son datos en formato JSON simple, por supuesto, los datos generales del rastreador no son tanto...
JSON se divide en dos formatos, uno es Object (Object), el otro es Array (Array) Los métodos para analizar diferentes formatos son diferentes pero similares
Distintivo de formato:
El distintivo de formato es muy sencillo
, esto es para ver que el símbolo { } delante de él es un objeto, y [ ] es un array
Formato de objeto: Formato
de matriz:
{
"employees": [
{
"firstName": "Bill",
"lastName": "Gates"
},
{
"firstName": "George",
"lastName": "Bush"
},
{
"firstName": "Thomas",
"lastName": "Carter"
}
]
}
{este es un objeto}
[esta es una matriz]
Se puede acceder a las matrices subscribiendo
Estructura JSON:
puede ver que es una estructura numérica.
Para acceder al nodo del elemento en él, primero debe eliminar la raíz (empleados) y luego obtener las hojas (nombre).
Como se mencionó anteriormente, la matriz puede acceder a la contenido correspondiente a través de subíndices
El análisis de C#
presenta brevemente su formato y luego usa C# para analizarlo. Debe
usar la biblioteca de clases Newtonsoft.Json
e instalarla.
Espacios de nombres:
usando Newtonsoft.Json.Linq;
Recuerde importar el espacio de nombres
Los objetos y los arreglos tienen diferentes funciones
Objetos: JObject
Arreglos: JArray
Herramienta de clasificación JS:
los datos devueltos por los rastreadores normales son muy confusos, por lo que deben clasificarse con las herramientas JS
.
Después de clasificar, es claro de un vistazo.
Herramienta de análisis JS en línea
Análisis de objetos:
primero se requieren datos JSON, lo cual es conveniente para la demostración para importar directamente desde el local... Por supuesto, el rastreador normal se obtiene del servidor... solo para demostración
StreamReader read = new StreamReader(@"C:\Users\Acer\Desktop\1.txt", Encoding.UTF8);
//读取文本
string str =read.ReadToEnd();
El contenido de texto
{ } es el objeto analizado usando la función del objeto,
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"]);
Obtener su nodo arr["edad"] por objeto
Porque no es un combate real... no es difícil.
Análisis de matriz:
este es en realidad un objeto que contiene una matriz, por lo que debe convertirse
Leer JSON:
StreamReader read = new StreamReader(@"C:\Users\Acer\Desktop\2.txt", Encoding.UTF8);
string str =read.ReadToEnd();
Forzar formato de conversión:
JObject j = JObject.Parse(str);
JArray r = (JArray)j["employees"];
//强制转成数组 因为要获取employees
Después de que la conversión sea exitosa, puede usar el subíndice para obtener los datos necesarios para
mostrar los datos:
Console.WriteLine(r[1]["firstName"]);
El primer [ ] es el subíndice y el segundo es qué nodo obtener.
Si necesita mostrar todos los datos, puede usar el ciclo para acceder al subíndice para obtenerlo.
for (int i = 0; i < r.Count; i++)
{
Console.WriteLine(r[i]["firstName"]);
}
Lo mismo es cierto para otros nodos.
for (int i = 0; i < r.Count; i++)
{
Console.WriteLine(r[i]["firstName"]);
Console.WriteLine(r[i]["lastName"]+"\n");
}
Dijo tanto y se unió directamente al combate real...
Un área de comentarios:
los datos son demasiado desordenados para organizar la
herramienta de análisis JS en línea
porque JSON se puede anidar. Cada vez que desee visitar un nodo, primero debe obtener el nodo anterior.
Todos los datos incluyen datos (raíz del árbol) y anidados dentro y fuera Con visionCommentList y rootComments donde rootComments son sus datos de comentarios, es una matriz
nombre del autor: contenido del nombre de usuario
: contenido del comentario
headurl: avatar del usuario
Este es un objeto que primero lo obtiene en la forma de un objeto.
JObject j = JObject.Parse(str);
Obtener nodos anidados:
string js = j["data"]["visionCommentList"]["rootComments"].ToString();
JArray r = JArray.Parse(js);
//剩下的就是 数组 然后使用数组的方式解析
Bucle de subíndices para mostrar comentarios
for (int i = 0; i < r.Count; i++)
{
Console.WriteLine("\n"+r[i]["authorName"]+": "+r[i]["content"]);
}
Resumen:
No parece ser difícil. Es difícil encontrar la interfaz y los parámetros para pasar cuando realmente se hace un rastreador...
Puro juego de manos, da un pulgar hacia arriba ~