[英]Getting property name while converting Json from Object in C#
我有一個 class 如下所示:
public class PCBulkRequest
{
public List<PCRequest> pcRequest { get; set; }
}
當我嘗試將此 class 轉換為 JSON 字符串時,我得到了包含屬性名稱的 JSON ,這是我不想要的。
string json = JsonConvert.SerializeObject(pcRequest, Formatting.Indented);
結果:
{
"pcRequest": [
{
"name": "John",
"surname": "Elton"
},
{
"name": "John",
"surname": "Elton"
}
]
}
預期結果:
[
{
"name": "John",
"surname": "Elton"
},
{
"name": "John",
"surname": "Elton"
}
]
直接序列化列表即可:
string json = JsonConvert.SerializeObject(pcRequest.pcRequest, Formatting.Indented);
順便說一句,您的命名目前有點令人困惑-聽起來您有一個名為pcRequest
的變量,其類型為PCBulkRequest
,並且您的pcRequest
屬性聽起來應該是一個請求,而實際上它是一個列表。 我會有這樣的名字:
public class PCBulkRequest
{
public List<PCRequest> Requests { get; set; }
}
...
var bulkRequest = GetBulkRequest(); // Wherever this comes from
string json = JsonConvert.SerializeObject(bulkRequest.Requests, Formatting.Indented);
我們看不到您是如何定義它的,但根據您得到的結果,您的代碼中的pcRequest
似乎必須是PCBulkRequest
class 的實例。
因此 Json.NET 將按照您的指示序列化整個 object。 如果您只想序列化列表,那么它非常簡單:您需要從 object 中提供列表作為要序列化的項目。
string json = JsonConvert.SerializeObject(pcRequest.pcRequest, Formatting.Indented);
Json.NET 庫只能序列化您告訴它的內容,它無法猜測您實際想要序列化的子部分!
注意,我建議您更清楚地命名您的變量,這樣您就不會重復使用 class 中的屬性名稱作為該 class 實例的變量名稱。 它可能會有點混亂。 並且屬性名稱pcRequest
是單數的,所以聽起來它會包含一個請求,而實際上它是一個列表 - 這也會讓人感到困惑。 如果您花時間為變量賦予有意義、清晰的名稱,您的代碼將更易於維護和理解(對您和其他人而言)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.