.NET 幫助

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

里根普恩
里根普恩
2023年10月29日
分享:

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

入門

要開始使用 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 將這個 JSON 字串解析成 C# 物件。()method where **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 查詢和操作 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

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

最後,我們儲存填寫好的 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(開發人員如何使用):圖三

結合 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 文件。

里根普恩
軟體工程師
Regan 畢業於雷丁大學,擁有電子工程學士學位。在加入 Iron Software 之前,他的工作角色讓他專注於單一任務;而他在 Iron Software 工作中最喜歡的是他所能承擔的工作範圍,無論是增加銷售價值、技術支持、產品開發或市場營銷。他喜歡了解開發人員如何使用 Iron Software 庫,並利用這些知識不斷改進文檔和開發產品。
< 上一頁
Math Floor C#(開發人員如何使用)
下一個 >
C# 及 (它如何為開發者工作)