![](/img/trans.png)
[英]Avoid object null reference exception when accessing sub-elements that may or may not exist
[英]Avoid object null reference exception when accessing sub-elements that may or may not exist (JSON)
我已經將json數據轉換為c#類,並希望將提取數據插入到我的數據庫中。
這是我的代碼:
My_Json My_Json_res = JsonConvert.DeserializeObject<My_Json>(result_str_after_request);
Venue vn = My_Json_res.venue;
Contact vn_contact = My_Json_res.venue.venue_contact;
Location vn_location = My_Json_res.venue.venue_location;
DataLayer.venues.InsertRow(
vn.venue_id,
vn.venue_name,
vn_contact.contact_phone,
vn_contact.contact_twitter,
vn_contact.contact_facebook,
vn_contact.contact_facebookUsername,
vn_contact.contact_facebookName,
vn_location.location_address,
vn_location.location_crossStreet,
vn_location.location_lat,
vn_location.location_lng,
vn_location.location_distance,
vn_location.location_postalCode,
...
);
如您所見,我有很多子元素,有時在插入方法期間出現以下錯誤:
NullReferenceException未處理
你調用的對象是空的。
像這樣檢查存在性是非常困難的:
vn.price.message
上層對象( 作為insert方法中的參數 )有錯誤,因為json數據有時沒有價格元素,因此在t之后沒有消息 。
我如何將這些參數轉換為null?
編輯:
這是我在c#類中的兩個相關屬性:
VENUE CLASS
[JsonProperty("price")]
public Price venue_price { get; set; }
PRICE CLASS
[JsonProperty("message")]
public string price_message { get; set; }
為此類消息屬性設置默認null值的最快方法是什么?
使用JToken.SelectToken()
方法查找值。 如果它存在於完整路徑中,則將返回令牌,您可以檢索值。 否則它將為null。
var token = obj.SelectToken("vn.price.message");
if (token != null)
{
// do stuff with token
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.