Saltar al pie de página
.NET AYUDA

Newtonsoft Jsonpath (Cómo funciona para desarrolladores)

Si alguna vez has trabajado con datos JSON en .NET, probablemente te hayas encontrado con la biblioteca Newtonsoft.Json, un marco JSON popular de alto rendimiento para .NET. Este tutorial tiene como objetivo ayudar a los principiantes y usuarios intermedios a entender y usar eficazmente esta poderosa biblioteca, centrándose en sus referencias de sistema, documentación y cualquier actualización de lanzamiento relevante.

Empezando

Para empezar a usar Newtonsoft.Json, primero necesitas instalarlo en tu proyecto .NET. Esto se puede hacer a través de NuGet, el gestor de paquetes de .NET. En la Consola del Administrador de Paquetes NuGet, escribe:

Install-Package Newtonsoft.Json

Después de una instalación exitosa, agrega la biblioteca a tu proyecto .NET añadiendo la siguiente declaración using:

using Newtonsoft.Json;
using Newtonsoft.Json;
Imports Newtonsoft.Json
$vbLabelText   $csharpLabel

Parar JSON con Newtonsoft.JSON

El análisis de JSON es esencialmente el proceso de convertir una cadena en formato JSON en una estructura de datos utilizable en tu aplicación .NET. Con Newtonsoft.Json, el proceso es sencillo.

Veamos un objeto JSON de ejemplo para una persona:

{
    "Name": "Iron Developer",
    "Age": 30,
    "Email": "irondeveloper@ironsoftware.com"
}

Podemos analizar esta cadena JSON en un objeto C# utilizando el método JsonConvert.DeserializeObject() donde T es el tipo de objeto que queremos crear. En este caso, crearemos una clase Person y analizaremos el JSON en ella.

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
    public string Email { get; set; }
}

string jsonString = "JSON string here";
Person person = JsonConvert.DeserializeObject<Person>(jsonString);
public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
    public string Email { get; set; }
}

string jsonString = "JSON string here";
Person person = JsonConvert.DeserializeObject<Person>(jsonString);
Public Class Person
	Public Property Name() As String
	Public Property Age() As Integer
	Public Property Email() As String
End Class

Private jsonString As String = "JSON string here"
Private person As Person = JsonConvert.DeserializeObject(Of Person)(jsonString)
$vbLabelText   $csharpLabel

Ahora, el objeto person contendrá los valores de la cadena JSON.

Trabajar con archivos JSON

A menudo necesitarás leer o escribir datos JSON de o hacia un archivo. Veamos cómo podemos hacer eso con Newtonsoft.Json. Usaremos la clase File del espacio de nombres System.IO en este caso.

Para leer un archivo JSON y analizarlo en un objeto:

string path = "path to your json file";
string jsonString = File.ReadAllText(path);
Person person = JsonConvert.DeserializeObject<Person>(jsonString);
string path = "path to your json file";
string jsonString = File.ReadAllText(path);
Person person = JsonConvert.DeserializeObject<Person>(jsonString);
Dim path As String = "path to your json file"
Dim jsonString As String = File.ReadAllText(path)
Dim person As Person = JsonConvert.DeserializeObject(Of Person)(jsonString)
$vbLabelText   $csharpLabel

Para escribir un objeto en un archivo JSON:

Person person = new Person() 
{
    Name = "John Doe",
    Age = 30,
    Email = "johndoe@example.com"
};

string path = "path to your json file";
string jsonString = JsonConvert.SerializeObject(person);
File.WriteAllText(path, jsonString);
Person person = new Person() 
{
    Name = "John Doe",
    Age = 30,
    Email = "johndoe@example.com"
};

string path = "path to your json file";
string jsonString = JsonConvert.SerializeObject(person);
File.WriteAllText(path, jsonString);
Dim person As New Person() With {
	.Name = "John Doe",
	.Age = 30,
	.Email = "johndoe@example.com"
}

Dim path As String = "path to your json file"
Dim jsonString As String = JsonConvert.SerializeObject(person)
File.WriteAllText(path, jsonString)
$vbLabelText   $csharpLabel

Trabajar con matrices

En algunos casos, tu JSON incluirá arreglos. Por ejemplo, un objeto Person podría tener un arreglo de Friends:

{
    "Name": "John Doe",
    "Friends": [
        {
            "Name": "Jane Doe",
            "Age": 28
        },
        {
            "Name": "Billy",
            "Age": 25
        }
    ]
}

Puedes usar el bucle foreach para iterar sobre el arreglo JSON:

JArray friends = (JArray)jsonObject["Friends"];
foreach (JObject friend in friends)
{
    string friendName = (string)friend["Name"];
    Console.WriteLine(friendName);
}
JArray friends = (JArray)jsonObject["Friends"];
foreach (JObject friend in friends)
{
    string friendName = (string)friend["Name"];
    Console.WriteLine(friendName);
}
Dim friends As JArray = CType(jsonObject("Friends"), JArray)
For Each [friend] As JObject In friends
	Dim friendName As String = CStr([friend]("Name"))
	Console.WriteLine(friendName)
Next [friend]
$vbLabelText   $csharpLabel

Nota: jsonObject debe ser reemplazado con un JObject real inicializado desde el JSON.

Modificación y escritura de JSON

Newtonsoft.Json hace que sea fácil modificar y escribir JSON. Supongamos que necesitas actualizar el valor de Age de nuestro objeto Person.

jsonObject["Age"] = 31; // Update the age
jsonObject["Age"] = 31; // Update the age
jsonObject("Age") = 31 ' Update the age
$vbLabelText   $csharpLabel

Y luego escribirlo de nuevo en una cadena:

string updatedJson = jsonObject.ToString();
File.WriteAllText(path, updatedJson); // Write back to the file
string updatedJson = jsonObject.ToString();
File.WriteAllText(path, updatedJson); // Write back to the file
Dim updatedJson As String = jsonObject.ToString()
File.WriteAllText(path, updatedJson) ' Write back to the file
$vbLabelText   $csharpLabel

Nota: jsonObject debe ser reemplazado con un JObject real inicializado desde el JSON.

LINQ a JSON

Newtonsoft.Json también proporciona funcionalidad para consultar y manipular objetos JSON utilizando LINQ (Language Integrated Query). Esto es muy poderoso ya que te permite usar todos los operadores estándar de LINQ para consultar un objeto JSON tal como lo harías con XML o una colección de objetos.

Aquí hay un ejemplo que muestra cómo puedes obtener los nombres de todos los Friends menores de 30:

var youngFriends = jsonObject["Friends"].Where(f => (int)f["Age"] < 30)
                                        .Select(f => (string)f["Name"]);
foreach (string name in youngFriends)
{
    Console.WriteLine(name);
}
var youngFriends = jsonObject["Friends"].Where(f => (int)f["Age"] < 30)
                                        .Select(f => (string)f["Name"]);
foreach (string name in youngFriends)
{
    Console.WriteLine(name);
}
Imports System

Dim youngFriends = jsonObject("Friends").Where(Function(f) CInt(Math.Truncate(f("Age"))) < 30).Select(Function(f) CStr(f("Name")))
For Each name As String In youngFriends
	Console.WriteLine(name)
Next name
$vbLabelText   $csharpLabel

Nota: jsonObject debe ser reemplazado con un JObject real inicializado desde el JSON.

Introducción a IronPDF

Conoce IronPDF es una biblioteca popular en el ecosistema .NET que permite a los desarrolladores crear, editar y extraer datos de archivos PDF. Es increíblemente versátil y funciona perfectamente con otras bibliotecas, incluida Newtonsoft.Json.

IronPDF se destaca en la conversión de HTML a PDF, asegurando la preservación precisa de los diseños y estilos originales. Es perfecto para crear PDFs a partir de contenido basado en la web como informes, facturas y documentación. Con soporte para archivos HTML, URLs y cadenas HTML en bruto, IronPDF produce fácilmente documentos PDF de alta calidad.

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
Imports IronPdf

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim renderer = New ChromePdfRenderer()

		' 1. Convert HTML String to PDF
		Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
		Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
		pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")

		' 2. Convert HTML File to PDF
		Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
		Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
		pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")

		' 3. Convert URL to PDF
		Dim url = "http://ironpdf.com" ' Specify the URL
		Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
		pdfFromUrl.SaveAs("URLToPDF.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

Supongamos que tenemos un requisito donde tenemos datos JSON y queremos crear un informe PDF a partir de esos datos. Podemos usar Newtonsoft.Json para analizar los datos JSON e IronPDF para crear el PDF. Veamos cómo podemos hacer esto.

Instalación de IronPDF

Al igual que Newtonsoft.Json, IronPDF también está disponible a través de NuGet. Puedes instalarlo utilizando el siguiente comando:

Install-Package IronPdf

Luego puedes incluirlo en tu proyecto añadiendo:

using IronPdf;
using IronPdf;
Imports IronPdf
$vbLabelText   $csharpLabel

Caso de uso 1: Creación de PDF a partir de datos JSON

En este caso de uso, demostraremos cómo usar Newtonsoft.Json e IronPDF para generar un informe PDF a partir de datos JSON. Esto podría ser particularmente útil para aplicaciones que crean informes dinámicos basados en datos almacenados en formato JSON.

Aquí hay un archivo JSON de ejemplo con el que trabajaremos:

{
    "Title": "Sales Report",
    "Month": "August",
    "Year": "2023",
    "TotalSales": "10000",
    "ItemsSold": "500"
}

Estos datos JSON representan un informe de ventas simple.

El primer paso es leer el archivo JSON, llamado 'data.json' aquí, y analizarlo en un diccionario usando Newtonsoft.Json:

string jsonString = File.ReadAllText("data.json");
var reportData = JsonConvert.DeserializeObject<Dictionary<string, string>>(jsonString);
string jsonString = File.ReadAllText("data.json");
var reportData = JsonConvert.DeserializeObject<Dictionary<string, string>>(jsonString);
Dim jsonString As String = File.ReadAllText("data.json")
Dim reportData = JsonConvert.DeserializeObject(Of Dictionary(Of String, String))(jsonString)
$vbLabelText   $csharpLabel

Después de ejecutar este código, tendrás un diccionario llamado reportData que contiene pares clave-valor representando las propiedades y sus valores en el archivo JSON.

A continuación, generamos una plantilla HTML utilizando los datos de reportData. Las claves del diccionario reportData se utilizan para insertar los valores apropiados en el HTML:

string htmlContent = $@"
<html>
<head><title>{reportData["Title"]}</title></head>
<body>
    <h1>{reportData["Title"]}</h1>
    <p>Month: {reportData["Month"]}</p>
    <p>Year: {reportData["Year"]}</p>
    <p>Total Sales: {reportData["TotalSales"]}</p>
    <p>Items Sold: {reportData["ItemsSold"]}</p>
</body>
</html>";
string htmlContent = $@"
<html>
<head><title>{reportData["Title"]}</title></head>
<body>
    <h1>{reportData["Title"]}</h1>
    <p>Month: {reportData["Month"]}</p>
    <p>Year: {reportData["Year"]}</p>
    <p>Total Sales: {reportData["TotalSales"]}</p>
    <p>Items Sold: {reportData["ItemsSold"]}</p>
</body>
</html>";
Dim htmlContent As String = $"
<html>
<head><title>{reportData("Title")}</title></head>ignoreignore<body><h1>{reportData("Title")}</h1><p>Month: {reportData("Month")}</p><p>Year: {reportData("Year")}</p><p>Total Sales: {reportData("TotalSales")}</p><p>Items Sold: {reportData("ItemsSold")}</p></body></html>"
$vbLabelText   $csharpLabel

Finalmente, usamos IronPDF para convertir el código HTML en un documento PDF. Usamos ChromePdfRenderer para crear un renderizador de PDF, lo usamos para convertir el HTML a PDF y luego guardar el PDF:

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("Report.pdf");
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("Report.pdf");
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
pdf.SaveAs("Report.pdf")
$vbLabelText   $csharpLabel

Newtonsoft Jsonpath (Cómo Funciona Para Desarrolladores): Figura 1

Caso de uso 2: Formulario de JSON a PDF

En este caso de uso, leeremos datos JSON para completar campos de formulario en un documento PDF. Para este ejemplo, consideremos que tenemos los siguientes datos JSON:

{
    "FirstName": "John",
    "LastName": "Smith",
    "PhoneNumber": "+19159969739",
    "Email": "John@email.com",
    "City": "Chicago"
}

Estos datos JSON representan información personal de una persona.

Primero, usamos Newtonsoft.Json para leer los datos JSON del archivo y analizarlos en un diccionario:

string jsonString = File.ReadAllText("data.json");
var person = JsonConvert.DeserializeObject<Dictionary<string, string>>(jsonString);
string jsonString = File.ReadAllText("data.json");
var person = JsonConvert.DeserializeObject<Dictionary<string, string>>(jsonString);
Dim jsonString As String = File.ReadAllText("data.json")
Dim person = JsonConvert.DeserializeObject(Of Dictionary(Of String, String))(jsonString)
$vbLabelText   $csharpLabel

Este software crea un diccionario llamado person con claves "FirstName", "LastName", "PhoneNumber", "Email", y "City" y sus valores correspondientes.

A continuación, abrimos el documento PDF usando IronPdf y obtenemos el formulario:

var doc = PdfDocument.FromFile("myPdfForm.pdf");
var form = doc.Form;
var doc = PdfDocument.FromFile("myPdfForm.pdf");
var form = doc.Form;
Dim doc = PdfDocument.FromFile("myPdfForm.pdf")
Dim form = doc.Form
$vbLabelText   $csharpLabel

Ahora podemos usar el diccionario person para completar los campos del formulario en el documento PDF:

form.Fields[0].Value = person["FirstName"];
form.Fields[1].Value = person["LastName"];
form.Fields[2].Value = person["PhoneNumber"];
form.Fields[3].Value = person["Email"];
form.Fields[4].Value = person["City"];
form.Fields[0].Value = person["FirstName"];
form.Fields[1].Value = person["LastName"];
form.Fields[2].Value = person["PhoneNumber"];
form.Fields[3].Value = person["Email"];
form.Fields[4].Value = person["City"];
form.Fields(0).Value = person("FirstName")
form.Fields(1).Value = person("LastName")
form.Fields(2).Value = person("PhoneNumber")
form.Fields(3).Value = person("Email")
form.Fields(4).Value = person("City")
$vbLabelText   $csharpLabel

Cada campo del formulario está asociado con una clave del diccionario del person.

Finalmente, guardamos el formulario PDF completado:

doc.SaveAs("myPdfForm_filled.pdf");
doc.SaveAs("myPdfForm_filled.pdf");
doc.SaveAs("myPdfForm_filled.pdf")
$vbLabelText   $csharpLabel

Este método creará un nuevo documento PDF con los campos del formulario completados con los datos del archivo JSON.

Esto demuestra cómo puedes usar eficazmente Newtonsoft.Json para analizar datos JSON e IronPDF para manipular documentos PDF.

Newtonsoft Jsonpath (Cómo Funciona Para Desarrolladores): Figura 2

Caso de uso 3: Metadatos PDF a JSON

Primero, usa IronPDF para extraer los metadatos del PDF:

var pdf = IronPdf.PdfDocument.FromFile("document.pdf");
var metadata = pdf.MetaData;
var pdf = IronPdf.PdfDocument.FromFile("document.pdf");
var metadata = pdf.MetaData;
Dim pdf = IronPdf.PdfDocument.FromFile("document.pdf")
Dim metadata = pdf.MetaData
$vbLabelText   $csharpLabel

Luego, serializa estos datos en una cadena JSON usando Newtonsoft.Json:

string jsonString = JsonConvert.SerializeObject(metadata, Formatting.Indented);
File.WriteAllText("metadata.json", jsonString);
string jsonString = JsonConvert.SerializeObject(metadata, Formatting.Indented);
File.WriteAllText("metadata.json", jsonString);
Dim jsonString As String = JsonConvert.SerializeObject(metadata, Formatting.Indented)
File.WriteAllText("metadata.json", jsonString)
$vbLabelText   $csharpLabel

En este código, el objeto metadata contiene propiedades como Author, Title, CreateDate, etc. Estas son serializadas en una cadena JSON y escritas en un archivo llamado "metadata.json".

Newtonsoft Jsonpath (Cómo Funciona Para Desarrolladores): Figura 3

La combinación de Newtonsoft.Json e IronPDF te permite convertir datos entre archivos PDF y JSON, cumpliendo una amplia gama de casos de uso.

Conclusión

Para concluir, juntos, Newtonsoft.Json e IronPDF proporcionan una solución poderosa y flexible para manejar datos JSON y generar archivos PDF en .NET. Al analizar datos JSON en objetos o diccionarios de .NET con Newtonsoft.Json, podemos manipular esos datos y usarlos en varios contextos, como llenar formularios PDF o generar informes PDF dinámicos a partir de plantillas. IronPDF hace que el proceso de crear y gestionar PDFs sea sencillo y eficiente.

Este artículo introdujo las bibliotecas, destacando alguna de sus funcionalidades principales. Sin embargo, ambas bibliotecas tienen mucho más que ofrecer. Recomendamos encarecidamente revisar su amplia documentación para profundizar en sus características y capacidades.

Si estás interesado en probar IronPDF, ofrecen una prueba gratuita de IronPDF para que puedas explorar sus características y evaluar si satisface tus necesidades antes de comprar. Una vez que decidas continuar con IronPDF, la licencia comienza en Opciones de Licencias de IronPDF que incluye acceso continuo a todas las características que discutimos y soporte y actualizaciones. Esto asegura que tienes las herramientas y asistencia para generar, gestionar y manipular efectivamente archivos PDF en tus proyectos .NET.

Preguntas Frecuentes

¿Cómo instalo Newtonsoft.Json para trabajar con JSON en .NET?

Puedes instalar la biblioteca Newtonsoft.Json en tu proyecto .NET utilizando el Administrador de Paquetes NuGet. Ejecuta el comando Install-Package Newtonsoft.Json en la Consola del Administrador de Paquetes. Una vez instalado, inclúyelo en tu proyecto con using Newtonsoft.Json;.

{"text":"\u00bfPara qu\u00e9 se utiliza JsonConvert.DeserializeObject()?"}

El método JsonConvert.DeserializeObject() se utiliza para analizar datos JSON en objetos .NET. Convierte cadenas JSON en objetos del tipo T, permitiéndote trabajar con datos JSON en tus aplicaciones C#.

¿Cómo puedo manipular datos JSON usando LINQ?

LINQ to JSON es una característica proporcionada por Newtonsoft.Json, que te permite consultar y manipular objetos JSON usando la sintaxis de LINQ. Esto es útil para filtrar o buscar datos JSON de manera eficiente dentro de tus aplicaciones .NET.

¿Cómo genero un informe PDF a partir de datos JSON?

Para generar un informe PDF a partir de datos JSON, primero convierte el JSON en objetos .NET usando Newtonsoft.Json. Luego, crea una plantilla HTML usando estos datos. Usa el ChromePdfRenderer de IronPDF para convertir la plantilla HTML en un documento PDF.

¿Puedo llenar formularios PDF usando datos JSON?

Sí, puedes llenar formularios PDF con datos JSON analizando el JSON en un diccionario usando Newtonsoft.Json, luego ingresando estos datos en los campos del formulario PDF usando IronPDF, antes de guardar el documento PDF llenado.

¿Cómo puedo convertir metadatos de PDF a JSON?

Extrae los metadatos de un PDF usando IronPDF y conviértelos en una cadena JSON usando Newtonsoft.Json. Este proceso te permite almacenar y manipular fácilmente metadatos de PDF en formato JSON.

¿Cuáles son las ventajas de usar Newtonsoft.Json e IronPDF juntos?

Usar Newtonsoft.Json con IronPDF en una aplicación .NET proporciona una forma fluida de manejar datos JSON y generar o manipular archivos PDF, facilitando tareas como generación de informes dinámicos, llenado de formularios e intercambio de datos.

¿Cómo leo y escribo archivos JSON en .NET?

Para leer un archivo JSON, utiliza File.ReadAllText para cargar la cadena JSON, luego análízala con JsonConvert.DeserializeObject. Para escribir JSON, serializa un objeto usando JsonConvert.SerializeObject y guárdalo con File.WriteAllText.

Jacob Mellor, Director de Tecnología @ Team Iron
Director de Tecnología

Jacob Mellor es Director de Tecnología en Iron Software y un ingeniero visionario que lidera la tecnología PDF en C#. Como el desarrollador original detrás de la base de código central de Iron Software, ha moldeado la arquitectura de productos de la compañía desde ...

Leer más