C#_當呼叫API內容返回結果反序列化成物件遇到對應Raw data欄位名稱空白間隔Json.NET處理方式
由於近期偕同專地圖系統推薦相關詞詞向量檢索API
要接回Response做反序列化時遇到的問題
做一個筆記紀錄
這是用PostMan看的到的
Input跟Output皆為Json格式
而對應要反序列化的物件Class定義
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | using Newtonsoft.Json; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Web; /// <summary> /// IC_KeyWord_Model 的摘要描述 /// </summary> public class IC_KeyWord_Model { public string keyword { get; set; } public string[] similarwords { get; set; } public string[] additionalwords { get; set; } } |
這裡遇到尷尬的點就是
可以看到它原始Response的欄位資料有空白間隔
然額我們在C#裡面不可能空白間隔命名我們物件的property
這裡只要記得在屬性欄位上方加上一個
[JsonProperty(PropertyName = "XXXX")]即可
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | using Newtonsoft.Json; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Web; /// <summary> /// IC_KeyWord_Model 的摘要描述 /// </summary> public class IC_KeyWord_Model { [JsonProperty(PropertyName = "keyword")] public string keyword { get; set; } [JsonProperty(PropertyName = "similar words")] public string[] similarwords { get; set; } [JsonProperty(PropertyName = "additional words")] public string[] additionalwords { get; set; } } |
Ref:
2021/03/04 處理json response 在反序列化回來時候欄位有空白分隔問題
Json DeserializeObject with whitespace in Resource Objects
Deserializing json with Json.net C# - whitespace within identifiers
Parsing of JSON where a key contains spaces
How to create a property name with space?
Map JSON to C# Class with Attribute names having space and Reserve words
留言
張貼留言