【发布时间】:2014-11-10 17:19:50
【问题描述】:
我已将 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数据有时没有price元素所以没有message在那之后。
我怎样才能将这些参数转换为null?
编辑:
这是我在 c# 类中的两个相关属性:
VENUE CLASS
[JsonProperty("price")]
public Price venue_price { get; set; }
PRICE CLASS
[JsonProperty("message")]
public string price_message { get; set; }
为此类 message 属性设置默认空值的最快方法是什么?
【问题讨论】:
-
你不能让那些对象的属性总是返回一个对象吗?
-
@Lasse V. Karlsen 我使用在线转换器从 json 创建 c# 类。但我认为这是解决方案。请把它作为答案。
-
当人们看到问题围绕着 NullReferenceException 错误消息时,有时会有点急切。然而,这个问题是关于类设计的,而不是(在我看来)该问题的重复。
-
您是否在序列化这些对象以及反序列化它们?
-
如果对象突然返回所有属性中的对象,序列化这将成为一场噩梦,因为任何地方都不会再有缺失值。
标签: c# json class exception null