.Net HttpClient 使用Json數據

HttpClient 使用Json數據

在這里插入圖片描述

現代Web項目中,Json是最常用的數據格式。不論是前后端的交互中,還是純前端項目中,都是如此。因此,.Net HttpClient 能不能更加方便、快捷的處理Json格式數據,也就至關重要了!

文末有視頻效果


本文目錄

  • HttpClient 使用Json數據
    • 初始化
    • 手動管理 Json 數據
    • 使用相關類庫, 管理Json數據
    • 總結
    • 視頻演示


手動處理Json數據,也是可以的,只不過需要服務端配合、比較繁雜,與使用框架提供的相關類庫操作并沒有本質區別,只不過使用框架更方便、穩定!

.Net HttpClient 提供了一流的Json數據支持:

  • System.Net.Http.Json 提供了序列化和反序列化 Json 數據功能
  • Microsoft.Extensions.Http 擴展庫,提供了發送請求和接收響應時,對Json數據的擴展支持
  • Microsoft.Net.Http.Headers 提供請求或響應頭的一些枚舉及幫功能

初始化

#!import "./Ini.ipynb"

手動管理 Json 數據

借助 System.Net.Http.Json 或者 Newtonsoft.Json類庫,手動管理(序列化、反序列化等)Json數據也是可以的。

  • 在請求中使用Json數據

在請求中使用json數據,基本就是指在請求體中使用json。url參數、路由參數、請求頭中,很少使用json數據;當然,如果使用也是可以的,只要服務端配合就行!

#r "nuget:Newtonsoft.Json"{ //手動管理json//參數對象var postData = new {id = 1,name = "小品王"};//手動轉為json字符串var textJsonData = Newtonsoft.Json.JsonConvert.SerializeObject(postData);//請求內容var requestContent = new StringContent(textJsonData, Encoding.UTF8, System.Net.Mime.MediaTypeNames.Application.Json);  //發送請求var response = await SharedClient.PostAsync("/api/AdvancedPost/JsonData", requestContent);//讀取響應內容var content = await response.Content.ReadAsStringAsync();//輸出響應內容Console.WriteLine(content);
}
  • 使用Json格式響應數據
#r "nuget:Newtonsoft.Json"{ //手動管理json//參數對象var postData = new {id = 2,name = "線程張"};//手動轉為json字符串var textJsonData = Newtonsoft.Json.JsonConvert.SerializeObject(postData);//請求內容var requestContent = new StringContent(textJsonData, Encoding.UTF8, System.Net.Mime.MediaTypeNames.Application.Json);  //發送請求var response = await SharedClient.PostAsync("/api/AdvancedPost/JsonData", requestContent);//讀取響應內容var content = await response.Content.ReadAsStringAsync();//手動反序列化Json為匿名對象(System.Text.Json不支持)var responseObj = Newtonsoft.Json.JsonConvert.DeserializeAnonymousType(content,postData);//輸出響應內容Console.WriteLine(content);
}

使用相關類庫, 管理Json數據

.Net框架,提供了豐富的 Json 類庫,使得在HttpClient中進行jsonr操作非常方便、好用!

注意: 確保引入了 Microsoft.Extensions.Http 類庫

  • 在請求中使用json數據
{ //引入 Microsoft.Extensions.Http//參數對象var postData = new {id = 2,name = "線程張"};//請求內容var requestContent = JsonContent.Create(postData);  //發送請求var response = await SharedClient.PostAsync("/api/AdvancedPost/JsonData", requestContent);//讀取響應內容var content = await response.Content.ReadAsStringAsync();//手動反序列化Json為匿名對象(System.Text.Json不支持)var responseObj = Newtonsoft.Json.JsonConvert.DeserializeAnonymousType(content,postData);//輸出響應內容Console.WriteLine(content);
}
  • 使用響應中的json數據
{ //引入 Microsoft.Extensions.Http//參數對象var postData = new {id = 2,name = "線程張"};//請求內容var requestContent = JsonContent.Create(postData);  //發送請求var response = await SharedClient.PostAsync("/api/AdvancedPost/JsonData", requestContent);//讀取響應內容,并且轉為對象var contentObject = await response.Content.ReadFromJsonAsync(postData.GetType());contentObject.Display();
}

總結

無論是手動處理 JSON 數據,還是借助框架類庫進行管理,其核心原理并無本質區別,都是圍繞接收和響應這種特定格式的數據展開的。

掌握"發送請求"和"接收響應"這兩個核心操作后,處理JSON數據就會變得輕而易舉。

當然了,還是推薦使用框架提供的類庫,非常方便、快捷,且不容出錯!畢竟,框架類庫的質量還是非常高的!

視頻演示

C# HttpClient 使用Json數據

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/905350.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/905350.shtml
英文地址,請注明出處:http://en.pswp.cn/news/905350.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

UDP--DDR--SFP,FPGA實現之指令監測模塊實現

指令監測模塊實現介紹 如下圖所示,為指令監測模塊的運行框圖 將指令設置為8bytes數據,故需要一個64位寄存器進行緩存,在進行數據緩存時,數據不可以輸出至下一級模塊,故對數據和有效指示信號也應該進行相應延遲&#…

JavaScript雙問號操作符(??)詳解,解決使用 || 時因類型轉換帶來的問題

目錄 JavaScript雙問號操作符(??)詳解,解決使用||時因類型轉換帶來的問題 一、雙問號操作符??的基礎用法 1、傳統方式的痛點 2、雙問號操作符??的精確判斷 3、雙問號操作符??與邏輯或操作符||的對比 二、復雜場景下的空值處理 …

智能體的典型應用:自動駕駛、智能客服、智能制造、游戲AI與數字人技術

本文為《React Agent:從零開始構建 AI 智能體》專欄系列文章。 專欄地址:https://blog.csdn.net/suiyingy/category_12933485.html。項目地址:https://gitee.com/fgai/react-agent(含完整代碼示?例與實戰源)。完整介紹…

Ubuntu 22.04(WSL2)使用Docker安裝Redis

Ubuntu 22.04(WSL2)使用Docker安裝Redis 本教程將指導您在運行于WSL2的Ubuntu 22.04上通過Docker安裝Redis 7.4.3。您將獲得一個配置了自定義設置、持久化存儲和安全選項的Redis實例。 前提條件 WSL2上已安裝Ubuntu 22.04。WSL2上已安裝并運行Docker&…

淺談 Redis 數據類型

淺談 Redis 數據類型 (一)String 類型 Redis 的 String 類型 是二進制安全的,可以用來存儲 文本字符串、int 類型數據和 bitmap 位圖 等數據。 1. 字符串操作 適用于存儲 文本、JSON、序列化數據 等任意二進制安全的內容 命令作用示例SET設…

Day1 時間復雜度

一 概念 在 C 中,時間復雜度是衡量算法運行時間隨輸入規模增長的趨勢的關鍵指標,用于評估算法的效率。它通過 大 O 表示法(Big O Notation) 描述,關注的是輸入規模 n 趨近于無窮大時,算法時間增長的主導因…

PAC文件:智能代理配置的瑞士軍刀

在日常上網和企業網絡環境中,我們經常需要配置代理服務器來訪問特定資源、增強安全性或管理網絡流量。Windows和macOS系統自帶的代理配置通常提供全局代理或簡單的排除列表,這在某些復雜場景下顯得不夠靈活。例如,我們可能只想代理某個特定的…

獲取高德地圖JS API的安全密鑰和Key的方法

要使用高德地圖JavaScript API,您需要獲取API Key和安全密鑰(securityJsCode)。以下是獲取步驟: 1. 注冊高德開放平臺賬號 首先訪問高德開放平臺,如果沒有賬號需要先注冊。 2. 創建應用獲取Key 登錄后進入"控制臺" 點擊"應…

攜程酒店 phantom-token token1004 分析

聲明 本文章中所有內容僅供學習交流使用,不用于其他任何目的,抓包內容、敏感網址、數據接口等均已做脫敏處理,嚴禁用于商業用途和非法用途,否則由此產生的一切后果均與作者無關! 部分python代碼 搞APP搞的心態有點崩…

小紅書多賬號運營效率優化:技術方案與自動化實踐

目錄 一、效率瓶頸與流程優化方向 二、技術實現方案與效率提升路徑 1. 多賬號統一管理:環境隔離與批量操作 2. 自動化任務設計:RPA與腳本化執行 四、效果驗證與數據對比 五、總結與開源工具推薦 六、下載地址: 一、效率瓶頸與流程優化…

FastDDS Transport功能模塊初步整理

一. 總體結構 二. 主要類的功能 2.1 TransportDescriptor和TransportInterface ? FastDDS中整個Transport類的設計遵循的是設計模式中的建造者模式,其中,TransportDescriptor就是建造者,而TransportInterface則是建造出來的產品。 ? Tra…

zabbix最新版本7.2超級詳細安裝部署(一)

如果文章對你有用,請留下痕跡在配置過程中有問題請及時留言,本作者可以及時更新文章 目錄 1、提前準備環境 2、zabbix7.2安裝部署 3、安裝并配置數據庫 4、為Zabbix server配置數據庫 5、為Zabbix前端配置PHP 6、啟動Zabbix server和agent進程 7、關閉防…

CodeBlocks調試報錯

嘗試打斷點,并且點擊紅色箭頭啟動debugger時,控制臺報錯 Active debugger config: GDB/CDB debugger:Default Building to ensure sources are up-to-date Selecting target: Debug Adding source dir: C:\Users\Lenovo\Desktop\exercise\ Adding source…

Manus 開放注冊:AI 智能體領域的新起點

2025 年 5 月 13 日成為了一個具有特殊意義的日子 —— 備受矚目的 AI 智能體平臺 Manus(Manus)正式宣布開放注冊。這一消息猶如一顆重磅炸彈,瞬間在全球科技圈引起了廣泛關注和熱烈討論。在此之前,Manus 一直以其獨特的魅力和極高…

車載網關作為車輛網絡系統的核心樞紐

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 鈍感力的“鈍”,不是木訥、遲鈍,而是直面困境的韌勁和耐力,是面對外界…

俄羅斯方塊算法2025.5.10

問題描述 俄羅斯方塊(Tetris)作為風靡全球38年的現象級益智游戲,其簡單易學但難于精通的特性使其成為游戲史上的不朽經典。以下是其核心游戲規則解析及我們的要求: 游戲界面由20行10列的可視區域組成,7種不同形狀的四…

Femap許可網絡配置

電磁仿真領域,Femap以其卓越的性能和廣泛的應用場景,成為眾多工程師和科研人員的首選工具。為了滿足多用戶協作的需求,Femap提供了靈活的網絡配置方案。本文將詳細介紹Femap許可網絡配置的方法和優勢,幫助您輕松實現多用戶高效協作…

計算機視覺----時域頻域在圖像中的意義、傅里葉變換在圖像中的應用、卷積核的頻域解釋

1、時域(時間域)——自變量是時間,即橫軸是時間,縱軸是信號的變化。其動態信號x(t)是描述信號在不同時刻取值的函數。 2、頻域(頻率域)——自變量是頻率,即橫軸是頻率,縱軸是該頻率信號的幅度,也就是通常說…

主流高防服務器技術對比與AI防御方案實戰

1. 高防服務器核心能力對比 當前市場主流高防服務商(如阿里云、騰訊云、華為云)的核心防御能力集中在流量清洗與靜態規則防護,但面臨以下挑戰: 靜態防御瓶頸:傳統方案依賴預定義規則,對新型攻擊&#xff…

常時間運行的程序 導致系統卡頓 自動監控系統CPU和內存利用率 自動選擇 內存回收 軟件重啟 電腦重啟

長時間運行安防系統,導致CPU或內存利用率超80%,使得電腦變的緩慢、卡頓的問題。定時獲取CPU和內存利用率的數據,在不同時間段(如凌晨與平時),根據利用率的不同的閾值,進行:內存回收(…