属性名称中的特殊字符

agg*_*ggy 4 c# json special-characters deserialization

在我的应用程序中,webservice将返回一个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"
      }
    ]   }
Run Code Online (Sandbox Code Playgroud)

在这里,我想将这个json反序列化为一个类对象.其中类包含与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;}
        }

    }
Run Code Online (Sandbox Code Playgroud)

这里变量和属性"Feedback_IM&SR"具有'&'字符,在变量和属性名称中都不允许,但我需要该属性的值.

请有人帮我这个.

Nic*_*ull 10

使用Netwonsoft.NET:

var details = JsonConvert.DeserializeObject<UserDetails>(json);
Run Code Online (Sandbox Code Playgroud)

对于您的类,您需要在属性上具有名称的属性:

[JsonProperty(PropertyName = "Feedback_IM&SR")]
string _feedback_imsr { get; set; }
Run Code Online (Sandbox Code Playgroud)

现在,您可以保留JSON数据,使其具有所需的任何名称,并让您的C#类具有该属性的另一个名称.作为课程的一部分,这看起来像:

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;}
    }
}
Run Code Online (Sandbox Code Playgroud)


Mic*_*ato 7

您可以根据需要使用所有属性,但在 C# 实现中,请像这样写下它:

class UserDetails
{
   [JsonProperty ("Feedback_IM&SR")]
    public string FeedbackProperty{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)

如果您在属性上方添加“JsonProperty”属性,序列化程序将知道在 JSON 中,属性的名称是属性中声明的名称


小智 5

您可以使用以下引用从 json 生成类对象

http://json2csharp.com/

只需粘贴您的 json 字符串,它就会在该 json 中生成 C# 类和属性。