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

留言

這個網誌中的熱門文章

何謂淨重(Net Weight)、皮重(Tare Weight)與毛重(Gross Weight)

Architecture(架構) 和 Framework(框架) 有何不同?_軟體設計前的事前規劃的藍圖概念

經得起原始碼資安弱點掃描的程式設計習慣培養(五)_Missing HSTS Header