跳至頁尾內容
開發者更新

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"
}

我們可以使用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命名空間。

要讀取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將包含陣列。 例如,一個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值。

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(語言整合查詢)查詢和操作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

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

簡介 IronPDF

了解IronPDF是.NET生態系統中流行的庫,允許開發人員建立、編輯和從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資料代表一個簡單的銷售報告。

第一步是讀取名為"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

此軟體建立了一個名為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'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

在此程式碼中,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文件。

常見問題

如何在 .NET 中安裝 Newtonsoft.Json 以處理 JSON?

您可以使用 NuGet 套件管理員在您的 .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 解析為字典,然後使用 IronPDF 將這些資料填充到 PDF 表單欄位中,接著儲存填寫好的 PDF 文件。

如何將 PDF 的中繼資料轉換為 JSON?

using 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,請將物件序列化為 JSON 字串,然後使用 File.WriteAllText 儲存。

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

Jacob Mellor是Iron Software的首席技術官,一位在C# PDF技術上開創先河的遠見工程師。作為Iron Software核心程式碼庫的原開發者,他從創立以來就一直在塑造公司的產品架構,與首席執行官Cameron Rimington一起將公司轉變為服務於NASA、特斯拉和全球政府公司的50多名人員的公司。

Jacob擁有曼徹斯特大學的土木工程一等榮譽學士學位(BEng),於1998-2001年之間獲得。在1999年於倫敦創辦他的第一家軟體公司並於2005年建立了他的第一批.NET元組件後,他專注於解決Microsoft生態系統中的複雜問題。

他的旗艦IronPDF和Iron Suite .NET程式庫在全球獲得了超過3000萬次NuGet安裝依據,他的基礎程式碼基繼續支援著世界各地開發者使用的工具。擁有25年的商業經驗和41年的程式設計專業知識,他仍專注於推動企業級C#、Java和Python PDF技術的創新,同時指導下一代技術領導者。

Iron 支援團隊

我們線上24小時,每週5天。
聊天
電子郵件
給我打電話