跳過到頁腳內容
.NET幫助

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

如果您曾經在.NET中使用過 JSON 數據,您可能已經接觸過Newtonsoft.Json庫,這是一個流行的.NET高效能 JSON 框架。 本教學旨在幫助初學者和中級使用者有效地理解和使用這個強大的函式庫,重點介紹其係統參考、文件和任何相關的版本更新。

入門

要開始使用 Newtonsoft.Json,首先需要將其安裝到您的.NET專案中。 這可以透過.NET套件管理器NuGet來實現。 在NuGet套件管理器控制台中,鍵入:

Install-Package Newtonsoft.Json

安裝成功後,透過新增以下 using 語句將程式庫新增至您的.NET專案:

using Newtonsoft.Json;
using 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);
$vbLabelText   $csharpLabel

現在,person 物件將包含 JSON 字串中的值。

處理 JSON 文件

您經常需要從檔案中讀取或寫入 JSON 資料。讓我們看看如何使用 Newtonsoft.Json 來實現這一點。 在這種情況下,我們將使用 @@--CODE-496--CODE-495--CODE-496 命名空間中的 @@--CODE-495--CODE-496 類別。

讀取 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);
$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);
$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);
}
$vbLabelText   $csharpLabel

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

修改和撰寫 JSON

Newtonsoft.Json 讓修改和編寫 JSON 變得容易。 假設你需要更新我們的 Person 物件的 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
$vbLabelText   $csharpLabel

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

LINQ to JSON

Newtonsoft.Json 也提供了使用 LINQ(語言整合查詢)查詢和操作 JSON 物件的功能。 它非常強大,因為它允許您使用所有標準的 LINQ 運算子來查詢 JSON 對象,就像查詢 XML 或物件集合一樣。

以下範例顯示如何取得所有年齡小於 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);
}
$vbLabelText   $csharpLabel

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

IronPDF簡介

了解IronPDF,它是.NET生態系統中一個流行的庫,允許開發人員創建、編輯 PDF 文件並從中提取數據。 它用途非常廣泛,並且可以與其他庫無縫協作,包括 Newtonsoft.Json。

IronPDF在HTML 轉 PDF 方面表現出色,可確保精確保留原始佈局和樣式。 它非常適合從基於 Web 的內容(例如報告、發票和文件)建立 PDF。 IronPDF支援 HTML 檔案、URL 和原始 HTML 字串,可以輕鬆產生高品質的 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");
    }
}
$vbLabelText   $csharpLabel

假設我們有一個需求,我們需要將 JSON 資料轉換為 PDF 報表。 我們可以使用 Newtonsoft.Json 解析 JSON 數據,並使用IronPDF建立 PDF。 我們來看看該怎麼做。

IronPDF的安裝

與 Newtonsoft.Json 一樣, IronPDF也可透過NuGet取得。 您可以使用以下命令進行安裝:

Install-Package IronPdf

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

using IronPdf;
using 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資料代表一份簡單的銷售報告。

第一步是讀取名為"data.json"的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);
$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>";
$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");
$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);
$vbLabelText   $csharpLabel

軟體建立一個名為 person 的字典,其鍵為 "FirstName", "LastName", "PhoneNumber", "PhoneNumber", "PhoneNumber@", "Email", 和 "@CODE-DE-5。

接下來,我們使用 IronPdf 開啟 PDF 文件並取得表單:

var doc = PdfDocument.FromFile("myPdfForm.pdf");
var form = doc.Form;
var doc = PdfDocument.FromFile("myPdfForm.pdf");
var 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"];
$vbLabelText   $csharpLabel

表單中的每個欄位都與該人員字典中的一個鍵相關聯。

最後,我們儲存填寫好的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;
$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);
$vbLabelText   $csharpLabel

在這段程式碼中,metadata 物件包含諸如 CreateDate 等屬性。這些屬性被序列化為 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 保存。

Jacob Mellor, Team Iron 首席技術官
首席技術官

Jacob Mellor是Iron Software的首席技術官,也是開創C# PDF技術的前瞻性工程師。作為Iron Software核心代碼庫的原始開發者,他自公司成立以來就塑造了公司的產品架構,並與CEO Cameron Rimington將公司轉型為服務NASA、Tesla以及全球政府機構的50多人公司。

Jacob擁有曼徹斯特大學土木工程一級榮譽學士學位(1998年–2001年)。他於1999年在倫敦開立首家軟體公司,並於2005年建立了他的第一個.NET組件,專注於解決Microsoft生態系統中的複雜問題。

他的旗艦作品IronPDF和Iron Suite .NET程式庫全球已獲得超過3000萬次NuGet安裝,他的基礎代碼不斷在全球各地驅動開發者工具。擁有25年以上的商業經驗和41年的編碼專業知識,Jacob仍然專注於推動企業級C#、Java和Python PDF技術的創新,同時指導下一代技術領導者。

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me