這個 JSON 有效負載中的一個節點讓我抓狂。
它的格式像一個字串(在引號內),但它不會進入我的物件上的字串。
這是我收到的整個有效載荷:
{
"Event_Id":"da89afe72b41cb685f03261d8cb18d9e",
"Event_Name":"Employee Created",
"Event_DateTime":1655144130,
"ClientCode":"XXXXX",
"Resource_Field":"Employee",
"Resource_Identifier":null,
"Object":null,
"Object_Identifier":"9995",
"Data":"{"Employee_ID":"9995","Is_Rehire":"N","Was_New_Hire":"Y"}",
"Endpoint":"Employee",
"EndpointUrl":"api/v1/employee/9995"
}
問題是"Data"屬性,為清楚起見將其分開。
這是它加載到的物件:
public class OutsideEvent
{
public string Event_Id { get; set; }
public string Event_Name { get; set; }
public int Event_DateTime { get; set; }
public string ClientCode { get; set; }
public string Resource_Field { get; set; }
public object Resource_Identifier { get; set; }
public object Object { get; set; }
public string? Object_Identifier { get; set; }
**public string? Data { get; set; }**
public string Endpoint { get; set; }
public string EndpointUrl { get; set; }
}
使用 Postman,我可以從“資料”值周圍洗掉引號,將型別更改為物件并將其反序列化為:
public class eventData
{
public string Employee_ID { get; set; }
public string Is_Rehire { get; set; }
public string Was_New_Hire { get; set; }
}
但是我不能讓發件人洗掉引號,所以我必須以某種方式處理它?
由于我不關心這個值,還嘗試用它來裝飾Data屬性,但它并沒有改變任何東西。[JsonIgnore]
任何幫助將不勝感激。
謝謝!
uj5u.com熱心網友回復:
json 資料屬性是無效字串,因為它包含雙引號中的雙引號
....
"Data":"{"Employee_ID":"9995","Is_Rehire":"N","Was_New_Hire":"Y"}",
....
所以只需洗掉外部雙引號,您可以使用字串替換功能來完成
json = json.Replace("\"{", "{").Replace("}\"","}");
現在你有一個有效的 json
...
"Data":{"Employee_ID":"9995","Is_Rehire":"N","Was_New_Hire":"Y"},
....
你可以將它反序列化為 c#
Root root=JsonConvert.DeserializeObject<Root>(json);
課程
public class Data
{
public string Employee_ID { get; set; }
public string Is_Rehire { get; set; }
public string Was_New_Hire { get; set; }
}
public class Root
{
public string Event_Id { get; set; }
public string Event_Name { get; set; }
public int Event_DateTime { get; set; }
public string ClientCode { get; set; }
public string Resource_Field { get; set; }
public object Resource_Identifier { get; set; }
public object Object { get; set; }
public string Object_Identifier { get; set; }
public Data Data { get; set; }
public string Endpoint { get; set; }
public string EndpointUrl { get; set; }
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/495288.html
