.NET 幫助

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

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

入門

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

:InstallCmd Install-Package Newtonsoft.Json
:InstallCmd Install-Package Newtonsoft.Json
SHELL

安裝成功後,通過添加以下 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

修改和編寫 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

LINQ to JSON

Newtonsoft.Json 還提供使用 LINQ(Language Integrated Query,語言整合查詢)查詢和操作 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);
} 
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

IronPDF 介紹

了解 IronPDF 是 .NET 繁衍體系中頗受歡迎的程式庫,允許開發人員創建、編輯,以及從 PDF 文件中提取數據。 它非常多功能,並且能夠與包括 Newtonsoft.Json 在內的其他庫良好配合。

IronPDF 在HTML 到 PDF轉換中表現優異,確保精確保留原始佈局和樣式。 它非常適合從基於網絡的內容(如報告、發票和文檔)創建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");
    }
}
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 資料代表一份簡單的銷售報告。

第一步是讀取名為 '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);
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" 及其相應的值。

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

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

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

最後,我們儲存填寫好的 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 文件。

Chipego
奇佩戈·卡林达
軟體工程師
Chipego 擁有天生的傾聽技能,這幫助他理解客戶問題,並提供智能解決方案。他在獲得信息技術理學學士學位後,于 2023 年加入 Iron Software 團隊。IronPDF 和 IronOCR 是 Chipego 專注的兩個產品,但隨著他每天找到新的方法來支持客戶,他對所有產品的了解也在不斷增長。他喜歡在 Iron Software 的協作生活,公司內的團隊成員從各自不同的經歷中共同努力,創造出有效的創新解決方案。當 Chipego 離開辦公桌時,他常常享受讀好書或踢足球的樂趣。
< 上一頁
Math Floor C#(開發人員如何使用)
下一個 >
C# 及 (它如何為開發者工作)