我已将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,
...
);
如你所见,我有很多子元素,有时在Insert方法中我得到以下错误:
NullReferenceException未处理 对象引用未设置为对象的实例。
很难检查这样的东西:
vn.price.message
上层对象(作为插入方法中的参数)有错误,因为json数据有时没有价格元素,因此没有消息之后。
我怎么能将这些参数转换为null?
编辑:
这是我在c#类中的两个属性:
VENUE CLASS
[JsonProperty("price")]
public Price venue_price { get; set; }
PRICE CLASS
[JsonProperty("message")]
public string price_message { get; set; }
为此类消息属性设置默认空值的最快方法是什么?
答案 0 :(得分:0)
使用JToken.SelectToken()
方法查找值。如果它存在于完整路径中,则将返回令牌,您可以检索您的值。否则它将为null。
var token = obj.SelectToken("vn.price.message");
if (token != null)
{
// do stuff with token
}