跳過到頁腳內容
.NET幫助

Newtonsoft Jsonpath(開發者的工作原理)

如果您曾經在.NET中使用JSON數據,您可能遇到過Newtonsoft.Json庫,一個熱門的高性能.NET JSON框架。 本教程旨在幫助初學者和中級用戶有效理解並使用這個強大的庫,重點在於其系統引用、文檔以及任何相關的版本更新。

入門指南

要開始使用Newtonsoft.Json,您首先需要將它安裝到您的.NET項目中。 這可以通過NuGet,即.NET包管理器來完成。 在NuGet包管理器控制台中,輸入:

Install-Package Newtonsoft.Json

成功安裝後,通過加入以下using語句將庫添加到您的.NET項目中:

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

使用Newtonsoft.JSON解析JSON

解析JSON本質上是將JSON格式的字符串轉換成.NET應用中的可用數據結構的過程。 使用Newtonsoft.Json,該過程非常簡單。

讓我們看看一個人的JSON對象示例:

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

我們可以使用JsonConvert.DeserializeObject<T>()方法將此JSON字符串解析為C#對象,其中T是我們想要創建的對象類型。 在此情況下,我們將創建一個Person類並將JSON解析到其中。

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

現在,person對象將包含來自JSON字符串的值。

使用JSON文件

您通常需要從文件讀取或向文件寫入JSON數據。讓我們看看如何使用Newtonsoft.Json做到這一點。 在這種情況下,我們將使用System.IO命名空間中的File類。

要讀取JSON文件並將其解析為對象:

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

要將對象寫入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

使用數組

在某些情況下,您的JSON會包含數組。 例如,一個Person對象可能有一個Friends數組:

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

您可以使用foreach循環來迭代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

注意:jsonObject應替換為從JSON初始化的實際JObject。

修改和寫入JSON

Newtonsoft.Json使修改和寫入JSON變得容易。 假設您需要更新Person對象的Age值。

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

然後將其寫回為字符串:

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

注意:jsonObject應替換為從JSON初始化的實際JObject。

LINQ to JSON

Newtonsoft.Json還提供使用LINQ(Language Integrated Query)查詢和操作JSON對象的功能。 這非常強大,因為它允許您使用所有標準的LINQ運算符來查詢JSON對象,就像查詢XML或對象集合一樣。

這裡有一個示例,展示如何獲取所有Friends年齡小於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

注意:jsonObject應替換為從JSON初始化的實際JObject。

IronPDF 简介

Learn about IronPDF is a popular library in the .NET ecosystem that allows developers to 創建、編輯和從PDF文件中提取數據。 它非常多功能,並且與其他庫(包括Newtonsoft.Json)無縫協作。

IronPDF 在HTML 到 PDF轉換方麵表現出色,確保準確保持原始佈局和樣式。 它非常適合從網路內容生成 PDF,如報告、發票和文檔。 支持 HTML 文件、URL 和原始 HTML 字串的 IronPDF 可以輕鬆生成高質量的 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");
    }
}
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

假設我們有一個需求,我們有JSON數據,並想從該數據創建一份PDF報告。 我們可以使用Newtonsoft.Json來解析JSON數據,使用IronPDF來創建PDF。 讓我們看看如何做到這一點。

安裝 IronPDF

與Newtonsoft.Json類似,IronPDF也可通過NuGet獲得。 您可以使用以下命令進行安裝:

Install-Package IronPdf

然後,您可以通過添加以下內容將它包含在項目中:

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

用例1:從JSON數據創建PDF

在此用例中,我們將演示如何使用Newtonsoft.Json和IronPDF從JSON數據生成PDF報告。 這對於創建基於以JSON格式存儲的數據的動態報告的應用程序特別有用。

這是我們要處理的示例JSON文件:

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

這些JSON數據表示簡單的銷售報告。

第一步是讀取JSON文件,此處命名為'data.json',並使用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

運行此代碼後,您將獲得一個名為reportData的字典,其中包含表示JSON文件中屬性及其值的鍵值對。

接下來,我們使用reportData中的數據生成HTML模板。 使用來自reportData字典的鍵來插入適當的值到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

最後,我們使用IronPDF將HTML代碼轉換為PDF文檔。 我們使用ChromePdfRenderer創建PDF渲染器,使用它將HTML轉換為PDF,然後保存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(開發人員如何使用):圖1

用例2:JSON填充PDF表單

在這種用例中,我們將讀取JSON數據以填充PDF文檔中的表單字段。 在此示例中,假設我們有以下JSON數據:

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

這些JSON表示一個人的個人信息。

首先,我們使用Newtonsoft.Json從文件中讀取JSON數據,並將其解析為字典:

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

該軟件創建一個名為person的字典,其中有鍵"FirstName," "LastName", "PhoneNumber", "Email", 和"City"及其相應的值。

接下來,我們打開PDF文檔,使用IronPdf獲取表單:

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

我們現在可以使用person字典來填充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

每個表單字段都與person's字典中的一個鍵相關聯。

最後,我們保存填寫的PDF表單:

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

此方法將創建一個新PDF文檔,其中表單字段充滿來自JSON文件中的數據。

這演示了如何有效地使用Newtonsoft.Json解析JSON數據,並使用IronPDF操作PDF文檔。

Newtonsoft Jsonpath(開發人員如何使用):圖2

用例3:PDF元數據到JSON

首先,使用IronPDF從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

然後,使用Newtonsoft.Json將這些數據序列化為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

在此代碼中,metadata對象包含屬性如AuthorTitleCreateDate等。這些屬性序列化為JSON字符串並寫入文件名為“metadata.json”。

Newtonsoft Jsonpath(開發人員如何使用):圖3

結合Newtonsoft.Json和IronPDF,允許您在PDF文件和JSON之間轉換數據,滿足廣泛的使用情境。

結論

總而言之,Newtonsoft.Json和IronPDF一起提供了一個強大而靈活的解決方案,用於在.NET中處理JSON數據和生成PDF文件。 通過使用Newtonsoft.Json將JSON數據解析為.NET對象或字典,我們可以操縱這些數據並在各種上下文中使用,例如填寫PDF表單或從模板生成動態PDF報告。 IronPDF使創建和管理PDF的過程變得簡單高效。

這篇文章介紹了這些庫,突顯了一些其核心功能。 然而,這兩個庫還有很多其他功能可以提供。 我們強烈建議查看它們的詳細文檔以深入了解其特徵和能力。

如果您有興趣試用IronPDF,他們提供IronPDF的免費試用,這樣您可以探索其功能,並在購買之前評估它是否滿足您的需求。 一旦您決定繼續使用IronPDF,授權從IronPDF許可選項開始,包括我們討論過的所有功能的持續訪問以及支持和更新。 這確保您擁有工具和幫助來有效生成、管理和操縱.NET項目中的PDF文件。

常見問題解答

我如何安裝 Newtonsoft.Json 以在 .NET 中使用 JSON?

您可以使用 NuGet Package Manager 在您的 .NET 專案中安裝 Newtonsoft.Json 庫。在套件管理器控制台中執行命令 Install-Package Newtonsoft.Json。安裝後,使用 using Newtonsoft.Json; 將其包含在您的專案中。

JsonConvert.DeserializeObject() 用於什麼用途?

JsonConvert.DeserializeObject() 方法用於將 JSON 資料解析為 .NET 物件。它將 JSON 字符串轉換為 T 類型的物件,允許您在 C#應用程序中處理 JSON 資料。

我如何使用 LINQ 操作 JSON 資料?

LINQ to JSON 是 Newtonsoft.Json 提供的一個功能,使您可以使用 LINQ 語法查詢和操作 JSON 物件。這對於在 .NET 應用程式中高效地過濾或搜索 JSON 資料非常有用。

我如何從 JSON 資料產生 PDF 報告?

要從 JSON 資料生成 PDF 報告,首先使用 Newtonsoft.Json 將 JSON 轉換為 .NET 物件。然後,使用此資料創建一個 HTML 範本。使用 IronPDF 的 ChromePdfRenderer 將 HTML 範本轉換為 PDF 文件。

我可以使用 JSON 資料填寫 PDF 表單嗎?

是的,您可以透過使用 Newtonsoft.Json 將 JSON 解析為字典來填寫 PDF 表單,然後使用 IronPDF 將此資料填入 PDF 表單字段,最後存儲填寫好的 PDF 文件。

我如何將 PDF 元數據轉換為 JSON?

使用 IronPDF 提取 PDF 中的元數據,然後使用 Newtonsoft.Json 將其轉換為 JSON 字符串。此流程使您能夠輕鬆地以 JSON 格式存儲和操作 PDF 元數據。

結合使用 Newtonsoft.Json 和 IronPDF 有哪些優勢?

在 .NET 應用程式中,同時使用 Newtonsoft.Json 和 IronPDF 能提供一種無縫的方法來處理 JSON 資料,並生成或操作 PDF 文件,便於動態報告生成、表單填寫和資料交換。

我如何在 .NET 中讀取和寫入 JSON 文件?

要讀取 JSON 文件,可使用 File.ReadAllText 來載入 JSON 字符串,然後用 JsonConvert.DeserializeObject 解析。要寫入 JSON,使用 JsonConvert.SerializeObject 序列化物件並用 File.WriteAllText 保存。

Curtis Chau
技術作家

Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。