属性 姓名中的特殊字符
Special characters in property name
在我的应用程序中,网络服务将 return json
{
"UserDetails": [
{
"UserId": "57",
"EmailId": "prasant@xyz.com",
"UserName": "Prasant",
"TimezoneMins": "330",
"CustomLogo": "",
"IsExecutive": "True",
"HasNTID": "1",
"Org_Id": "1",
"Org_Name": "Summit",
"Designation": null,
"Location": null,
"Location_Name": "",
"WsVersion": "V5.1.0",
"CallMe": "FALSE",
"GPS": "FALSE",
"Feedback_IM&SR": "NULL",
"RPT_Widgets_Access": "False"
}
] }
这里我想将这个 json 反序列化为一个 class 对象。其中 class 包含与 json.
中的键相同的属性
public class UserDetails
{
int? _userId;
string _emailId;
string _userName;
int _timezoneMins;
string _customLogo;
string _isExecutive;
int _hasNTID;
int? _org_Id;
string _org_Name;
string _designation;
int? _location;
string _location_Name;
string _feedback_IMSR;
string _rPT_Widgets_Access;
public string Feedback_IM&SR
{
get{return _feedback_IMSR;}
set{_feedback_IMSR = value;}
}
}
此处的变量和 属性 "Feedback_IM&SR" 具有 '&' 字符,这在变量和 属性 名称中是不允许的,但我需要 [=28] 的值=].
谁能帮我解决这个问题。
var details = JsonConvert.DeserializeObject<UserDetails>(json);
对于您的 class,您的属性需要具有以下名称的属性:
[JsonProperty(PropertyName = "Feedback_IM&SR")]
string _feedback_imsr { get; set; }
现在您可以保留 JSON 数据的任意名称,并让您的 C# class 为 属性 取另一个名称。作为 class 的一部分,它看起来像:
public class UserDetails
{
int? _userId;
string _emailId;
string _userName;
int _timezoneMins;
string _customLogo;
string _isExecutive;
int _hasNTID;
int? _org_Id;
string _org_Name;
string _designation;
int? _location;
string _location_Name;
string _wsVersion;
string _callMe;
string _gPS;
string _feedback_IMSR;
string _rPT_Widgets_Access;
[JsonProperty(PropertyName = "Feedback_IM&SR")]
public string Feedback_IMSR
{
get{return _feedback_IMSR;}
set{_feedback_IMSR = value;}
}
}
你可以随心所欲地 属性,但在 C# 实现中,可以这样写:
class UserDetails
{
[JsonProperty ("Feedback_IM&SR")]
public string FeedbackProperty{ get; set; }
}
如果你在 属性 上面添加 "JsonProperty" 属性,序列化程序将知道在 JSON 中,属性 的名称是在属性
您可以使用以下参考资料
从json制作class个对象
只需粘贴您的 json 字符串,它将在 json.
中生成 C# class 和属性
在我的应用程序中,网络服务将 return json
{
"UserDetails": [
{
"UserId": "57",
"EmailId": "prasant@xyz.com",
"UserName": "Prasant",
"TimezoneMins": "330",
"CustomLogo": "",
"IsExecutive": "True",
"HasNTID": "1",
"Org_Id": "1",
"Org_Name": "Summit",
"Designation": null,
"Location": null,
"Location_Name": "",
"WsVersion": "V5.1.0",
"CallMe": "FALSE",
"GPS": "FALSE",
"Feedback_IM&SR": "NULL",
"RPT_Widgets_Access": "False"
}
] }
这里我想将这个 json 反序列化为一个 class 对象。其中 class 包含与 json.
中的键相同的属性public class UserDetails
{
int? _userId;
string _emailId;
string _userName;
int _timezoneMins;
string _customLogo;
string _isExecutive;
int _hasNTID;
int? _org_Id;
string _org_Name;
string _designation;
int? _location;
string _location_Name;
string _feedback_IMSR;
string _rPT_Widgets_Access;
public string Feedback_IM&SR
{
get{return _feedback_IMSR;}
set{_feedback_IMSR = value;}
}
}
此处的变量和 属性 "Feedback_IM&SR" 具有 '&' 字符,这在变量和 属性 名称中是不允许的,但我需要 [=28] 的值=].
谁能帮我解决这个问题。
var details = JsonConvert.DeserializeObject<UserDetails>(json);
对于您的 class,您的属性需要具有以下名称的属性:
[JsonProperty(PropertyName = "Feedback_IM&SR")]
string _feedback_imsr { get; set; }
现在您可以保留 JSON 数据的任意名称,并让您的 C# class 为 属性 取另一个名称。作为 class 的一部分,它看起来像:
public class UserDetails
{
int? _userId;
string _emailId;
string _userName;
int _timezoneMins;
string _customLogo;
string _isExecutive;
int _hasNTID;
int? _org_Id;
string _org_Name;
string _designation;
int? _location;
string _location_Name;
string _wsVersion;
string _callMe;
string _gPS;
string _feedback_IMSR;
string _rPT_Widgets_Access;
[JsonProperty(PropertyName = "Feedback_IM&SR")]
public string Feedback_IMSR
{
get{return _feedback_IMSR;}
set{_feedback_IMSR = value;}
}
}
你可以随心所欲地 属性,但在 C# 实现中,可以这样写:
class UserDetails
{
[JsonProperty ("Feedback_IM&SR")]
public string FeedbackProperty{ get; set; }
}
如果你在 属性 上面添加 "JsonProperty" 属性,序列化程序将知道在 JSON 中,属性 的名称是在属性
您可以使用以下参考资料
从json制作class个对象只需粘贴您的 json 字符串,它将在 json.
中生成 C# class 和属性